Zybo Z7上OpenCV和SDSoC的结合

时间:2025-11-01  作者:Diven  阅读:0

软硬件清单

SDSoC

Zybo Z7上OpenCV和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啦!

猜您喜欢

  ​0. 概述本文讨论四种常用FPGA/CPLD设计思想与技巧:乒乓操作串并转换流水线操作数据接口同步化都是FPGA/CPLD逻辑设计的内在规律的...
2023-05-18 08:56:00

贴片电阻上的47B标识表示其阻值为47欧姆,误差为±0.1%。 字母B代表0.1%的精度。贴片电阻通常采用三位数字或字母数字组合来表示阻值。前两位或三位数字表示...
2024-11-29 10:25:39

四端子电阻因其高精度和低温漂特性,被应用于各种精密测量和控制电路中。Uniohnm(厚声)作为知名的电阻制造商,其四端子电阻产品以很好的性能和可靠的品质赢得了市...
2018-03-02 13:32:30

电脑包是专为携带笔记本电脑及其配件而设计的包具。通常采用耐磨、抗水的材料制成,以保护设备免受外界环境的影响。电脑包的设计多样,既有单肩包、双肩包,也有手提包,满...
2012-09-27 00:00:00

板材在建筑、家具制造和装修等领域中是非常重要的配件。板材作为结构材料,提供了必要的支撑和稳定性,确保建筑物的安全和耐久性。板材的多样性使其适用于不同的设计风格,...
2018-02-03 00:00:00

贴片电阻1BB是一种应用于电子电路中的基础元件。其微小的尺寸和优异的性能使其成为现代电子产品设计的理想选择。1BB系列电阻采用先进的厚膜技术制造,具有高精度、高...
2024-11-29 10:26:05

贴片排阻作为电子元器件中的重要组成部分,应用于各种电路板设计中。作为全球知名品牌,Panasonic(松下)生产的贴片排阻优良的品质和稳定的性能,受到工程师和制...
2014-08-10 16:07:52

电子设备和电路设计中,高压二极管是不可少的组件。被应用于电源转换、整流、保护电路等领域。在实际应用中,很多工程师和技术人员常常会遇到一个问题:不同型号的高压二极...
2025-04-03 02:01:07

在选择刀、剪、铲、勺、镊、钳等工具时,了解其参数非常重要。刀的刀刃材质、硬度和锋利度直接影响切割效果,常见的有不锈钢和碳钢。剪刀的剪口形状和刀柄设计则决定了使用...
2011-01-10 00:00:00

采样电阻作为关键元件,是监测电流、实现精确控制的重要配件。而台庆(TAI-TECH)作为行业内的佼佼者,其采样电阻产品在性能与可靠性方面均展现出很好表现。本文将...
2015-12-08 00:20:57