1# 边缘检测算子 2 3## 1.概述 4 5* 基于SDK sample进行yuv图片的边缘检测,以canny算子为例。 6* 具体代码路径在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/platform/svp/ive/sample路径下的sample_ive_canny.c,分析sample_ive_canny.c代码中**SAMPLE_IVE_Canny canny sample**接口,如下图所示: 7 8 9 10* 运行的主入口在device/soc/hisilicon/hi3516dv300/sdk_linux/sample/platform/svp/ive中sample_ive_main.c文件中,如下图所示: 11 12 13 14* 关于canny算子的其他细节,自行查阅device/soc/hisilicon/hi3516dv300/sdk_linux/sample/platform/svp/ive/sample/sample_ive_canny.c代码即可 15 16## 2.编译 17 18在编译sample_ive_main.c之前,需确保OpenHarmony 小型系统的主干代码已经整编通过,**且已经按照《[修改源码及配置文件适配Taurus开发板](2.2.1.%E4%BF%AE%E6%94%B9%E6%BA%90%E7%A0%81%E5%8F%8A%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E9%80%82%E9%85%8DTaurus%E5%BC%80%E5%8F%91%E6%9D%BF.md)》的内容进行修改**。在单编sample_ive_main.c前,需修改目录下的一处依赖,进入//device/soc/hisilicon/hi3516dv300/sdk_linux目录下,通过修改BUILD.gn,在deps下面新增target,``"sample/platform/svp/ive:hi3516dv300_ive_sample"``,如下图所示: 19 20 21 22* 点击Deveco Device Tool工具的Build按键进行编译,具体的编译过程这里不再赘述,编译成功后,如下图所示: 23 24 25 26* 编译成功后,即可在out/hispark_taurus/ipcamera_hispark_taurus_linux/rootfs/bin目录下,生成 ohos_ive_demo可执行文件,如下图所示: 27 28 29 30## 3. 拷贝可执行程序和依赖文件至开发板的mnt目录下 31 32**方式一:使用SD卡进行资料文件的拷贝** 33 34* 首先需要自己准备一张SD卡 35* 步骤1:将编译后生成的可执行文件拷贝到SD卡中。 36* 步骤2:将device\soc\hisilicon\hi3516dv300\sdk_linux\out\lib\目录下的**libvb_server.so和 libmpp_vbs.so**拷贝至SD卡中 37* 步骤3:将device/soc/hisilicon/hi3516dv300/sdk_linux/sample/platform/svp/ive/目录下的 data文件拷贝至SD卡中。(前提是按照《[获取sample依赖的资源文件到本地](6.2.%E8%8E%B7%E5%8F%96sample%E4%BE%9D%E8%B5%96%E7%9A%84%E8%B5%84%E6%BA%90%E6%96%87%E4%BB%B6%E5%88%B0%E6%9C%AC%E5%9C%B0.md)》文档获取了资源文件) 38 39 40 41* 步骤4:可执行文件拷贝成功后,将内存卡插入开发板的SD卡槽中,可通过挂载的方式挂载到板端,可选择SD卡 mount指令进行挂载。 42 43```shell 44mount -t vfat /dev/mmcblk1p1 /mnt 45# 其中/dev/mmcblk1p1需要根据实际块设备号修改 46``` 47 48* 挂载成功后,如下图所示: 49 50 51 52**方式二:使用NFS挂载的方式进行资料文件的拷贝** 53 54* 首先需要自己准备一根网线 55* 步骤1:参考[博客链接](https://blog.csdn.net/Wu_GuiMing/article/details/115872995?spm=1001.2014.3001.5501)中的内容,进行nfs的环境搭建 56* 步骤2:将编译后生成的可执行文件拷贝到Windows的nfs共享路径下 57* 步骤3:将device\soc\hisilicon\hi3516dv300\sdk_linux\out\lib\目录下的**libvb_server.so和 libmpp_vbs.so**拷贝至Windows的nfs共享路径下 58* 步骤4:将device/soc/hisilicon/hi3516dv300/sdk_linux/sample/platform/svp/ive/目录下的 data文件拷贝至Windows的nfs共享路径下。(前提是按照《[获取sample依赖的资源文件到本地](6.2.%E8%8E%B7%E5%8F%96sample%E4%BE%9D%E8%B5%96%E7%9A%84%E8%B5%84%E6%BA%90%E6%96%87%E4%BB%B6%E5%88%B0%E6%9C%AC%E5%9C%B0.md)》文档获取了资源文件) 59 60 61 62* 步骤5:执行下面的命令,将Windows的nfs共享路径挂载至开发板的mnt目录下 63 64``` 65mount -o nolock,addr=192.168.200.1 -t nfs 192.168.200.1:/d/nfs /mnt 66``` 67 68## 4.拷贝mnt目录下的文件至正确的目录下 69 70* 执行下面的命令,拷贝mnt目录下面的ohos_ive_demo和data至userdata目录,拷贝mnt目录下面的libvb_server.so和 libmpp_vbs.so至/usr/lib/目录下, 71 72``` 73cp /mnt/ohos_ive_demo /userdata 74cp /mnt/data /userdata -rf 75cp /mnt/*.so /usr/lib/ 76``` 77 78 79 80* 执行下面的命令,给ohos_ive_demo文件可执行权限 81 82``` 83chmod 777 /userdata/ohos_ive_demo 84``` 85 86## 5. 功能验证 87 88* 执行下面的命令,启动可执行文件,即可完成图像canny计算,如下图所示: 89 90``` 91cd /userdata 92 93./ohos_ive_demo 2 0 94``` 95 96 97 98* 输出的结果存放在/userdata/data/output/canny目录下,如下图所示: 99 100 101 102