本章节将介绍 OpenCV 的移植方法,及结合 Qt 例程去进一步学习 OpenCV 识别图像。本章节使用的资料已经放到了开发板网盘资料中,路径为:“11_Linux 系统开发进阶\85_章节_移植 OpenCv2.4.9 使用资料”。
我们需要准备的资料:
1. 开发板使用的是 i.MX6ULL 终结者,开发板里面是 Yocto 文件系统。
2. 使用 Ubuntu16.04
3. 提供 opencv 源码“opencv-2.4.9.zip”
4. QT 测试例程
85.1 安装交叉编译工具
移植的 QT 系统需要的交叉编译器就是我们编译 qt 的编译器,因为我们是 Yocto 系统,所以我们用编译 Yocto 的编译器来编译 OpenCV。交叉编译器为:gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf。设置交叉编译器请参考 i.MX6ULL 终结者-开发板使用手册 4.3 章节 搭建交叉编译环境。
85.2 搭建 OpenCv 编译环境
1.我们将文件中提供的“opencv-2.4.9.zip”也就是 opencv 源码通过 ssh 软件移 ubuntu 下并解压,作者将该文件放入了“/home/topeet/opencv2.4.9”目录下,新建 opencvbuild 和 opencvinstall 文件夹,opencvbuild是构建目录,opencvinstall 是安装目录如图 85.2.1 所示。
2.OpenCV 2.2 以后版本需要使用 Cmake 生成 makefile 文件,因此需要先安装 cmake。ubuntu 下安装 cmake 比较简单,使用命令“apt-get install cmake”,如图 85.2.2 所示。
3.使用命令“cmake --version”查看版本,测试是否安装成功。如图 85.2.3 所示。
4.我们使用命令“cd opencv-2.4.9/”进入源码目录。如图 85.2.4
5.使用命令“cmake-gui”打开 cmake 的 gui 界面,开始进行配置。如图 85.2.5 所示。
6.我们在“where is the source code”中填入电脑中 opencv 源码的位置,“where to build the binaries”填入生成 make 编译文件的位置,然后点击 configure 按钮。如图 85.2.6 所示。
7.选择最后一项,然后点击 next,如图 85.2.7 所示。
8.Operating System 选择目标系统“Linux”,
Compilers 中选择交叉编译器的 gcc 和 g++,
“/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc”
“/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++”,Target
Root 选择交叉编译器的路径
“/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/bin”,include
Mode 选择“search only in target root”,其他如图 85.2.8 所示,点击 finish.如果出现配置错误的信息,关闭警告配置即可。
9.此时主界面如下图所示,这时 Cmake 会读取程序的一些配置信息,可以在下图红框中对每一个编译选项进行修改,将 CMAKE_INSTALL_PREFIX 改成你想要的路径,作者改成了“/home/topeet/opencv2.4.9/opencvinstall”,如图 85.2.9 所示。
最后点 Generate,在编译路径/home/topeet/opencv2.4.9/opencvbuild 下就生成 Makefile。
10.我们使用“cd /home/topeet/opencv2.4.9/opencvbuild”命令进入
“/home/topeet/opencv2.4.9/opencvbuild”目录下,在执行 Makefile 之前需要修改 CMakeCache.txt 文件的194 行。使用命令“vi CMakeCache.txt”编辑文本。如图 85.2.10 所示。
跳转至 194 行。将“CMAKE_EXE_LINKER_FLAGS:STRING=' '”改为
“CMAKE_EXE_LINKER_FLAGS:STRING=-lpthread -lrt -ldl”如图 85.2.11 所示。修改后保存退出。
11.在 /home/topeet/opencv2.4.9/opencvbuild 目录下输入命令 make 编译。编译部分截图如图 85.2.12所示。
编译完成之后。如图 85.2.13 所示:
使用指令“make install”,部分截图如图 85.2.14 所示。
安装完成后,我们可以在“/home/topeet/opencv2.4.9/opencvinstall”目录下看到编译生成的库文件。至此,移植工作基本完成。