本文档介绍的是在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>

OpenCV 2.2以后版本需要使用Cmake生成makefile文件,因此需要先安装cmake。
ubuntu下安装cmake比较简单,使用命令“apt-get install cmake”,如下图所示。
<ignore_js_op>

使用命令“cmake --version”查看版本,测试是否安装成功。如下图所示。
<ignore_js_op>

我们使用命令“cd opencv-2.4.9/”进入源码目录。如下图示。
<ignore_js_op>

使用命令“cmake-gui”打开cmake的gui界面,开始进行配置。如下图示所示。
<ignore_js_op>

我们在“where is the source code”中填入电脑中opencv源码的位置,“where to build the binaries”填入生成make编译文件的位置,然后点击configure按钮。如下图所示。
<ignore_js_op>

选择最后一项,然后点击next,如下图所示。
<ignore_js_op>

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>

.此时主界面如下图所示,这时Cmake会读取程序的一些配置信息,可以再下图红框中对每一个编译选项进行修改,将CMAKE_INSTALL_PREFIX改成你想要的路径,作者改成了“/usr/local/opencv-2.4.9”,这里去掉WITH_TIFF,WITH_CUDA及WITH_GTK。如下图所示。
<ignore_js_op>

最后点Generate,在编译路径/opt/opencv_arm下就生成了Makefile。关闭后我们使用“cd /opt/opencv-arm/”命令进入“/opt/opencv_arm”,在执行Makefile之前需要修改CMakeCache.txt文件的194行。使用命令“vi CMakeCache.txt”编辑文本。如下图所示。
<ignore_js_op>

跳转至194行。将“CMAKE_EXE_LINKER_FLAGS:STRING=' '”改为“CMAKE_EXE_LINKER_FLAGS:STRING=-lpthread -lrt -ldl”如下图所示。
<ignore_js_op>

保存退出后,使用“make”编译。编译部分截图如下所示。
<ignore_js_op>

编译完成之后。使用指令“make install”,部分截图如下所示。
<ignore_js_op>

我们可以在“/usr/local/opencv-2.4.9/”目录下看到编译生成的库文件。至此,移植工作基本完成。
<ignore_js_op>

UVC程序编译
我们把文件夹中带的例程源码“camera_opencv.tar.gz”通过ssh拷贝到ubuntu下,如下图所示。
<ignore_js_op>

使用命令“tar -xvf camera_opencv.tar.gz”解压程序源码。如下图所示。
<ignore_js_op>

使用命令“cd camera_opencv/”进入。然后使用命令“/opt/qt-4.7.1/bin/qmake”“make”编译程序,编译完成即可看到程序,如下图所示。
<ignore_js_op>

生成文件系统
我们使用命令“ cd /home/topeet/Linux+QT/root/”进入qt文件系统目录。如下图所示。
<ignore_js_op>

使用命令“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>

我们使用命令“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>

使用命令“cd ../../”返回上一级目录。使用命令“make_ext4fs -s -l 314572800 -a root -L linux system.img root”生成文件系统镜像。如下图所示。
<ignore_js_op>

然后将文件系统烧写到开发板上(QT系统)。
程序测试
开发板上电启动后,使用命令“ps”查看当前进程,并kill fluidlauncher。如下图所示。
<ignore_js_op>

使用命令“cd /topeet/”进入程序存放目录。使用命令“./camera_opencv -qws &”即可运行程序,此时屏幕显示uvc摄像头浏览画面。
<ignore_js_op>

更多内容关注北京迅为