Zybo Z7上OpenCV和SDSoC的结合

软硬件清单 sdsoc
zybo z7
包含linux内核+根文件系统的平台
装有linux系统的计算机
获取opencv
这一步你至少可以有两个选择,一种是下载并交叉编译库(docs.opencv.org/2.4/doc/tutorials/introduction/crosscompilation/arm_crosscompile_with_cmake);第二种是获取一个已经交叉编译好的库。在这一教程中,我们事先已经在sdsoc安装文件夹中建立好了opencv 2.4.5版本。
修改平台 这里我们需要将编译好的库添加到你想要用于项目的sdsoc平台的根文件系统中。在这步操作之后,可执行文件(你的应用程序)将能够加载库。 在zybo z7平台中使用的文件系统镜像类型是initramfs。如果你手头的是另一种镜像类型,你可以在xilinx wiki上得到更多的所需信息:+and+modify+a+rootfs
3.1 将根文件系统复制到临时文件夹中
将位于平台的启动文件夹中名为“uramdisk.image.gz”的存档复制黏贴到一个临时文件夹中。打开终端,并进入该文件夹。
3.2 去掉u-boot头文件以获得cpio存档
dd if=uramdisk.image.gz bs=64 skip=1 of=ramdisk.gz
3.3 将新的cpio存档压缩到一个新创建的文件夹中
mkdir my_root
gunzip -c ramdisk.gz | sh -c ‘cd my_root/ && sudo cpio -i’
3.4 复制库与头文件(-p保存链接)
sudo cp -p /opt/xilinx/sdsoc/2015.4/sdk/2015.4/data/embeddedsw/thirdparty/opencv/lib/* my_root/lib/
sudo cp -r /opt/xilinx/sdsoc/2015.4/sdk/2015.4/data/embeddedsw/thirdparty/opencv/include/* my_root/usr/include/
3.5 压缩到cpio和gunzip
sudo sh -c ‘cd my_root/ && find 。 | cpio -h newc -o’ | gzip -9 》 my_ramdisk.image.gz
3.6 添加u-boot头文件
mkimage -a arm -t ramdisk -c gzip -d my_ramdisk.image.gz my_uramdisk.image.gz
这里需要确保文件的权限设置为755:
sudo chmod 755 。/my_uramdisk.image.gz
3.7 在平台中更换新创建的镜像
cp 。/my_uramdisk.image.gz /pathtozyboplatform/boot/uramdisk.image.gz
在sdsoc中创建并配置一个新项目
4.1 添加包含路径
创建一个新项目,选择你修改后的平台,然后选择你想要使用linux。在project explorer(左侧面板)中右键单击项目,然后点击属性。 进入“c/c ++ build” - 》“设置” - 》 “sds ++编译器” - 》“目录”,为所选的“build/debug/estimate配置”添加opencv的包含路径(/opt/xilinx/sdsoc/2015.4/sdk/2015.4/data/embeddedsw/thirdparty/opencv/include),如下图所示:
4.2 链接库
完成后,转到sds ++ linker‘s configuration,在“库”下,添加要在项目中使用的库及其所在的路径(我这里是:/opt/xilinx/sdsoc/2015.4/sdk/2015.4/data/embeddedsw/thirdparty/opencv/lib)
4.3 添加-rpath-link
最后,你需要指定路径,使得链接器能够搜索opencv所需的依赖关系(libs)。 转到sds ++linker configuration,在“miscellaneous” - 》“linker flag”下添加以下行(-wl,-rpath-link = / opt / xilinx / sdsoc / 2015.4 / sdk / 2015.4 / data / embeddedsw / thirdparty / opencv /lib)。 -wl选项向工具链表明选项-rpath-link = 。。。将被提供给链接器。
进行测试 到这里,我们就要进行本文中最令人兴奋的部分:测试! 以下代码将对一张图像进行fast特征点检测:
创建你的程序,完成之后将“sd_card”文件夹中的内容复制到目标sd卡中,这里不要忘记在根目录下添加一个测试图像(有兴趣尝试的朋友,可以点击阅读原文,获取本教程所使用的图像源文件)。
boot操作完成后,使用以下命令在目标上运行可执行文件:
cd /mnt
。/00_ocv_helloworld.elf buildings.jpg ocv.jpg
如果一切顺利的话,则可执行文件会生成一个输出图像“ocv.jpg”,如下所示:
总结 我们将构建的库添加到sdsoc平台中使用的linux根文件系统中。然后,我们基于这个新的sdsoc平台配置了一个新的项目,其中包含正确的包含路径和链接。
到这里,你就可以随意使用opencv啦!

中兴通讯携手深圳联通成功部署了全国首个5G OTT业务端到端切片应用
小米净水器H1000G:首创行业双RO反渗透过滤技术
联轴器安装使用与维护
物联网如何帮助解决人口老龄化问题
如何理解我国工业互联网的发展特征?
Zybo Z7上OpenCV和SDSoC的结合
SDS2000X系列超级荧光示波器详解
可增加设备电池寿命和运行时间的环境光传感技术
三星电子欲追赶台积电 未来竞争将升级
远景维珍车队宣布与庄信万丰(JOHNSON MATTHEY)达成多年战略伙伴关系
工业控制计算机出厂前的高温老化测试有何影响
后经济危机时期全球芯片市场大趋势
三星Modem 5100基频芯片爆产能吃紧 不敷供应苹果首波5G手机需求
滴滴出行入驻日本
超基础:指针万用表测量电容器方法分享
“我会”受邀到肇庆新区参观考察
耦合PCR技术实现各种致病菌和病毒核酸的检测
超声波一体化气象站详解,支持常规7参数是哪些?
Intel 10nm服务器芯片将出货
WT2605C-32N语音芯片:动感单车新革命,音乐解码引领健身潮流