05-opencv移植终极解决方案之opencv库的移植和uvc摄像头例程(原创)

接前一篇《opencv移植-终极解决方案之buildroot文件系统图片测试(原创)》。

平台:Exynos4412。
实验平台:iTOP-4412-精英版。
编译平台:Ubuntu12.04。
编译器版本:arm-4.4.1,懒人直接用开发板自带的。
buildroot版本:直接官网下载。过段时间就更新,大家下载最新的,应该不会出问题。
opencv版本:opencv2.4.9,opencv是通过buildroot下载的。

可以给大家提供opencv源码“opencv-2.4.9.zip”,uvc摄像头qt源码“camera_opencv.tar.gz”以及opencv编译好的库文件“opencv-2.4.9_arm.tar.gz”。
PS:如果大家发现看别人的文章移植不成功,通过作者这么详细的文章实现了移植,一定要点个赞哟!!*

3.1 OPENCV移植
将文件中提供的“opencv-2.4.9.zip”即opencv源码包解压,并将其通过ssh软件移至ubuntu下,作者将该文件放入了“/home/work2/cwork/opencv”下,如下图所示。
在这里插入图片描述
OpenCV 2.2以后版本需要使用Cmake生成makefile文件,因此需要先安装cmake。
ubuntu下安装cmake比较简单,使用命令“apt-get install cmake”,如下图所示。
在这里插入图片描述
使用命令“cmake --version”查看版本,测试是否安装成功。如下图所示。
在这里插入图片描述
使用命令“cd opencv-2.4.9/”进入源码目录。如下图示。
在这里插入图片描述
使用命令“cmake-gui”打开cmake的gui界面,开始进行配置。如下图示所示。
在这里插入图片描述
在“where is the source code”中填入电脑中opencv源码的位置,“where to build the binaries”填入生成make编译文件的位置,然后点击configure按钮。如下图所示。
05-opencv移植终极解决方案之opencv库的移植和uvc摄像头例程(原创)_第1张图片
选择最后一项,然后点击next,如下图所示。
05-opencv移植终极解决方案之opencv库的移植和uvc摄像头例程(原创)_第2张图片
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。如下图所示。
05-opencv移植终极解决方案之opencv库的移植和uvc摄像头例程(原创)_第3张图片
.此时主界面如下图所示,这时Cmake会读取程序的一些配置信息,可以再下图红框中对每一个编译选项进行修改,将CMAKE_INSTALL_PREFIX改成你想要的路径,作者改成了“/usr/local/opencv-2.4.9”,这里去掉WITH_TIFF,WITH_CUDA及WITH_GTK。如下图所示。
05-opencv移植终极解决方案之opencv库的移植和uvc摄像头例程(原创)_第4张图片
最后点Generate,在编译路径/opt/opencv_arm下就生成了Makefile。关闭后我们使用“cd /opt/opencv-arm/”命令进入“/opt/opencv_arm”,在执行Makefile之前需要修改CMakeCache.txt文件的194行。使用命令“vi CMakeCache.txt”编辑文本。如下图所示。
05-opencv移植终极解决方案之opencv库的移植和uvc摄像头例程(原创)_第5张图片
跳转至194行。将“CMAKE_EXE_LINKER_FLAGS:STRING=’ '”改为“CMAKE_EXE_LINKER_FLAGS:STRING=-lpthread -lrt -ldl”如下图所示。
05-opencv移植终极解决方案之opencv库的移植和uvc摄像头例程(原创)_第6张图片
保存退出后,使用“make”编译。编译部分截图如下所示。
05-opencv移植终极解决方案之opencv库的移植和uvc摄像头例程(原创)_第7张图片
编译完成之后。使用指令“make install”,部分截图如下所示。
05-opencv移植终极解决方案之opencv库的移植和uvc摄像头例程(原创)_第8张图片
我们可以在“/usr/local/opencv-2.4.9/”目录下看到编译生成的库文件。至此,移植工作基本完成。
在这里插入图片描述
3.2 UVC程序编译
把文件夹中带的例程源码“camera_opencv.tar.gz”通过ssh拷贝到ubuntu下,如下图所示。
在这里插入图片描述
使用命令“tar -xvf camera_opencv.tar.gz”解压程序源码。如下图所示。
05-opencv移植终极解决方案之opencv库的移植和uvc摄像头例程(原创)_第9张图片
使用命令“cd camera_opencv/”进入。然后使用命令“/opt/qt-4.7.1/bin/qmake”“make”编译程序,编译完成即可看到程序,如下图所示。
05-opencv移植终极解决方案之opencv库的移植和uvc摄像头例程(原创)_第10张图片
3.3 生成文件系统
我们使用命令“ cd /home/topeet/Linux+QT/root/”进入qt文件系统目录。如下图所示。
在这里插入图片描述
使用命令“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/”动态库拷贝到开发板中。如下图所示。
在这里插入图片描述
我们使用命令“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”创建链接。如下图所示。
05-opencv移植终极解决方案之opencv库的移植和uvc摄像头例程(原创)_第11张图片
使用命令“cd …/…/”返回上一级目录。使用命令“make_ext4fs -s -l 314572800 -a root -L linux system.img root”生成文件系统镜像。如下图所示。
05-opencv移植终极解决方案之opencv库的移植和uvc摄像头例程(原创)_第12张图片
然后将文件系统烧写到开发板上(QT系统)。
3.4 程序测试
开发板上电启动后,使用命令“ps”查看当前进程,并kill fluidlauncher。如下图所示。
05-opencv移植终极解决方案之opencv库的移植和uvc摄像头例程(原创)_第13张图片
使用命令“cd /topeet/”进入程序存放目录。使用命令“./camera_opencv -qws &”即可运行程序,此时屏幕显示uvc摄像头浏览画面。
05-opencv移植终极解决方案之opencv库的移植和uvc摄像头例程(原创)_第14张图片

你可能感兴趣的:(原创-嵌入式opencv移植)