本文档介绍的是在QtE系统环境下迅为iTOP4412 UVC摄像头opencv程序实验调试步骤。我们使用的是4412全功能底板。提供opencv源码“opencv-2.4.9.zip”,uvc摄像头qt源码“camera_opencv.tar.gz”以及opencv编译好的库文件“opencv-2.4.9_arm.tar.gz”
OPENCV移植
我们将文件中提供的“opencv-2.4.9.zip”即opencv源码包解压,并将其通过ssh软件移至ubuntu下,作者将该文件放入了“/home/work2/cwork/opencv”下,如下图所示。
<ignore_js_op>![](http://www.eechina.com/data/attachment/forum/202007/21/110826sd6nu51nrr3m1u1n.png)
![](http://www.eechina.com/data/attachment/forum/202007/21/110826sd6nu51nrr3m1u1n.png)
OpenCV 2.2以后版本需要使用Cmake生成makefile文件,因此需要先安装cmake。
ubuntu下安装cmake比较简单,使用命令“apt-get install cmake”,如下图所示。
<ignore_js_op>![](http://www.eechina.com/data/attachment/forum/202007/21/110826k3xfged46db2ebdx.png)
![](http://www.eechina.com/data/attachment/forum/202007/21/110826k3xfged46db2ebdx.png)
使用命令“cmake --version”查看版本,测试是否安装成功。如下图所示。
<ignore_js_op>![](http://www.eechina.com/data/attachment/forum/202007/21/110826w0h9jml8ah0jph2p.png)
![](http://www.eechina.com/data/attachment/forum/202007/21/110826w0h9jml8ah0jph2p.png)
我们使用命令“cd opencv-2.4.9/”进入源码目录。如下图示。
<ignore_js_op>![](http://www.eechina.com/data/attachment/forum/202007/21/110826j808ki6h87096h6u.png)
![](http://www.eechina.com/data/attachment/forum/202007/21/110826j808ki6h87096h6u.png)
使用命令“cmake-gui”打开cmake的gui界面,开始进行配置。如下图示所示。
<ignore_js_op>![](http://www.eechina.com/data/attachment/forum/202007/21/110826idlzq6yqhyh63a64.png)
![](http://www.eechina.com/data/attachment/forum/202007/21/110826idlzq6yqhyh63a64.png)
我们在“where is the source code”中填入电脑中opencv源码的位置,“where to build the binaries”填入生成make编译文件的位置,然后点击configure按钮。如下图所示。
<ignore_js_op>![](http://www.eechina.com/data/attachment/forum/202007/21/110826p8znq3l0dlqz0l7y.png)
![](http://www.eechina.com/data/attachment/forum/202007/21/110826p8znq3l0dlqz0l7y.png)
选择最后一项,然后点击next,如下图所示。
<ignore_js_op>![](http://www.eechina.com/data/attachment/forum/202007/21/110826edkkndggdqkdt0dt.png)
![](http://www.eechina.com/data/attachment/forum/202007/21/110826edkkndggdqkdt0dt.png)
Operating System 选择目标系统“Linux”,Compilers中选择交叉编译器的gcc和g++,“/usr/local/arm/4.4.1/bin/arm-none-linux-gnueabi-gcc”“/usr/local/arm/4.4.1/bin/arm-none-linux-gnueabi-g++”,Target Root选择交叉编译器的路径“/usr/local/arm/4.4.1”,include Mode选择“search only in target root”。点击finish。如下图所示。
<ignore_js_op>![](http://www.eechina.com/data/attachment/forum/202007/21/110826ze91eizp5li8zpoy.png)
![](http://www.eechina.com/data/attachment/forum/202007/21/110826ze91eizp5li8zpoy.png)
.此时主界面如下图所示,这时Cmake会读取程序的一些配置信息,可以再下图红框中对每一个编译选项进行修改,将CMAKE_INSTALL_PREFIX改成你想要的路径,作者改成了“/usr/local/opencv-2.4.9”,这里去掉WITH_TIFF,WITH_CUDA及WITH_GTK。如下图所示。
<ignore_js_op>![](http://www.eechina.com/data/attachment/forum/202007/21/110826myo7lzlyyq7399l9.png)
![](http://www.eechina.com/data/attachment/forum/202007/21/110826myo7lzlyyq7399l9.png)
最后点Generate,在编译路径/opt/opencv_arm下就生成了Makefile。关闭后我们使用“cd /opt/opencv-arm/”命令进入“/opt/opencv_arm”,在执行Makefile之前需要修改CMakeCache.txt文件的194行。使用命令“vi CMakeCache.txt”编辑文本。如下图所示。
<ignore_js_op>![](http://www.eechina.com/data/attachment/forum/202007/21/110826l2rpcku2u92b9pui.png)
![](http://www.eechina.com/data/attachment/forum/202007/21/110826l2rpcku2u92b9pui.png)
跳转至194行。将“CMAKE_EXE_LINKER_FLAGS:STRING=' '”改为“CMAKE_EXE_LINKER_FLAGS:STRING=-lpthread -lrt -ldl”如下图所示。
<ignore_js_op>![](http://www.eechina.com/data/attachment/forum/202007/21/110826igowsqw25giwq7fs.png)
![](http://www.eechina.com/data/attachment/forum/202007/21/110826igowsqw25giwq7fs.png)
保存退出后,使用“make”编译。编译部分截图如下所示。
<ignore_js_op>![](http://www.eechina.com/data/attachment/forum/202007/21/110826pxgff3gaiglmtm88.png)
![](http://www.eechina.com/data/attachment/forum/202007/21/110826pxgff3gaiglmtm88.png)
编译完成之后。使用指令“make install”,部分截图如下所示。
<ignore_js_op>![](http://www.eechina.com/data/attachment/forum/202007/21/110826ip9eiipe24splc9e.png)
![](http://www.eechina.com/data/attachment/forum/202007/21/110826ip9eiipe24splc9e.png)
我们可以在“/usr/local/opencv-2.4.9/”目录下看到编译生成的库文件。至此,移植工作基本完成。
<ignore_js_op>![](http://www.eechina.com/data/attachment/forum/202007/21/110826eqeaqqtq5cqteq2v.png)
![](http://www.eechina.com/data/attachment/forum/202007/21/110826eqeaqqtq5cqteq2v.png)
UVC程序编译
我们把文件夹中带的例程源码“camera_opencv.tar.gz”通过ssh拷贝到ubuntu下,如下图所示。
<ignore_js_op>![](http://www.eechina.com/data/attachment/forum/202007/21/110826btyysb3trrr5zqpj.png)
![](http://www.eechina.com/data/attachment/forum/202007/21/110826btyysb3trrr5zqpj.png)
使用命令“tar -xvf camera_opencv.tar.gz”解压程序源码。如下图所示。
<ignore_js_op>![](http://www.eechina.com/data/attachment/forum/202007/21/110826qmvf9f1fipwvchvv.png)
![](http://www.eechina.com/data/attachment/forum/202007/21/110826qmvf9f1fipwvchvv.png)
使用命令“cd camera_opencv/”进入。然后使用命令“/opt/qt-4.7.1/bin/qmake”“make”编译程序,编译完成即可看到程序,如下图所示。
<ignore_js_op>![](http://www.eechina.com/data/attachment/forum/202007/21/110827ty5n35tr59rl9d6l.png)
![](http://www.eechina.com/data/attachment/forum/202007/21/110827ty5n35tr59rl9d6l.png)
生成文件系统
我们使用命令“ cd /home/topeet/Linux+QT/root/”进入qt文件系统目录。如下图所示。
<ignore_js_op>![](http://www.eechina.com/data/attachment/forum/202007/21/110827jlikhh8urshpsu1p.png)
![](http://www.eechina.com/data/attachment/forum/202007/21/110827jlikhh8urshpsu1p.png)
使用命令“cp -r /usr/local/opencv-2.4.9/ ./usr/local/”将opencv库文件拷贝到qt文件系统中,使用命令“cp -r /home/work2/cwork/opencv/camera_opencv/camera_opencv topeet/”将程序拷贝到文件系统中,使用命令“ cp -r /opt/opencv-arm/lib/* ./lib/”动态库拷贝到开发板中。如下图所示。
<ignore_js_op>![](http://www.eechina.com/data/attachment/forum/202007/21/110827xzktp76p26lkkdp7.png)
![](http://www.eechina.com/data/attachment/forum/202007/21/110827xzktp76p26lkkdp7.png)
我们使用命令“cd lib/”进入“lib”文件夹。使用命令“cp -r /usr/local/arm/4.4.1/arm-none-linux-gnueabi/libc/usr/lib/libstdc++.so.6.0.12 ./”将“libstdc++.so.6.0.12”拷贝到当前目录(自带的libstdc++.so.6.0.10不支持GLIBCXX_3.4.11,运行程序会报错),使用命令“”删除旧连接文件,使用命令“ln -s libstdc++.so.6.0.12 libstdc++.so.6”创建链接。如下图所示。
<ignore_js_op>![](http://www.eechina.com/data/attachment/forum/202007/21/110827s1jzn0z404mm6mt6.png)
![](http://www.eechina.com/data/attachment/forum/202007/21/110827s1jzn0z404mm6mt6.png)
使用命令“cd ../../”返回上一级目录。使用命令“make_ext4fs -s -l 314572800 -a root -L linux system.img root”生成文件系统镜像。如下图所示。
<ignore_js_op>![](http://www.eechina.com/data/attachment/forum/202007/21/110827ihqbmq500srbuqm0.png)
![](http://www.eechina.com/data/attachment/forum/202007/21/110827ihqbmq500srbuqm0.png)
然后将文件系统烧写到开发板上(QT系统)。
程序测试
开发板上电启动后,使用命令“ps”查看当前进程,并kill fluidlauncher。如下图所示。
<ignore_js_op>![](http://www.eechina.com/data/attachment/forum/202007/21/110827agdrcqv2q2dgqnjr.png)
![](http://www.eechina.com/data/attachment/forum/202007/21/110827agdrcqv2q2dgqnjr.png)
使用命令“cd /topeet/”进入程序存放目录。使用命令“./camera_opencv -qws &”即可运行程序,此时屏幕显示uvc摄像头浏览画面。
<ignore_js_op>![](http://www.eechina.com/data/attachment/forum/202007/21/110827tvp1ebcvumvq1gig.png)
![](http://www.eechina.com/data/attachment/forum/202007/21/110827tvp1ebcvumvq1gig.png)
更多内容关注北京迅为