本章节将介绍 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 所示。

opencv数电路板算法_linux


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

opencv数电路板算法_OpenCV_02


3.使用命令“cmake --version”查看版本,测试是否安装成功。如图 85.2.3 所示。

opencv数电路板算法_linux_03


4.我们使用命令“cd opencv-2.4.9/”进入源码目录。如图 85.2.4

opencv数电路板算法_opencv数电路板算法_04


5.使用命令“cmake-gui”打开 cmake 的 gui 界面,开始进行配置。如图 85.2.5 所示。

opencv数电路板算法_opencv数电路板算法_05


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

opencv数电路板算法_opencv数电路板算法_06


7.选择最后一项,然后点击 next,如图 85.2.7 所示。

opencv数电路板算法_OpenCV_07


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.如果出现配置错误的信息,关闭警告配置即可。

opencv数电路板算法_opencv数电路板算法_08


9.此时主界面如下图所示,这时 Cmake 会读取程序的一些配置信息,可以在下图红框中对每一个编译选项进行修改,将 CMAKE_INSTALL_PREFIX 改成你想要的路径,作者改成了“/home/topeet/opencv2.4.9/opencvinstall”,如图 85.2.9 所示。

opencv数电路板算法_OpenCV_09


最后点 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 所示。

opencv数电路板算法_opencv数电路板算法_10


跳转至 194 行。将“CMAKE_EXE_LINKER_FLAGS:STRING=' '”改为

“CMAKE_EXE_LINKER_FLAGS:STRING=-lpthread -lrt -ldl”如图 85.2.11 所示。修改后保存退出。

opencv数电路板算法_opencv数电路板算法_11


11.在 /home/topeet/opencv2.4.9/opencvbuild 目录下输入命令 make 编译。编译部分截图如图 85.2.12所示。

opencv数电路板算法_OpenCV_12


编译完成之后。如图 85.2.13 所示:

opencv数电路板算法_opencv数电路板算法_13


使用指令“make install”,部分截图如图 85.2.14 所示。

opencv数电路板算法_OpenCV_14


安装完成后,我们可以在“/home/topeet/opencv2.4.9/opencvinstall”目录下看到编译生成的库文件。至此,移植工作基本完成。

opencv数电路板算法_OpenCV_15