迅为i.MX6ULL 开发板-移植OpenCv3.4.1

我们需要准备的资料:

1.开发板使用的是迅为 i.MX6ULL 终结者,开发板里面是 Yocto 文件系统。

 

2.使用 Ubuntu16.04

3.提供 opencv 源码“opencv-3.4.1.zip”

4.QT 测试例程

1.1 安装交叉编译工具

移植的 QT 系统需要的交叉编译器就是我们编译 qt 的编译器,因为我们是 Yocto 系统,所以我们用编译 Yocto 的编译器来编译 OpenCV。交叉编译器为:gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf。设置交叉编译器请参考 i.MX6ULL 终结者-开发板使用手册 4.3 章节 搭建交叉编译环境。

1.2 搭建 OpenCV 的编译环境

1. Ubuntu 新建一个 opencv 文件夹。将迅为提供的 opencv-3.4.1 源码压缩包复制到 opencv 这个目录,解压。然后再 opencv 目录下新建 install,build 文件夹。build 文件夹是构建目录 install 文件夹是安装目录。如下图所示:

 

2.安装 cmake cmake-gui 工具

sudo apt-get install cmake cmake-qt-gui cmake-curses-gui

 

安装完成提示安装成功,作者是已经安装过了,如下图所示:

 

3.进入 build 目录下,执行指令 cmake-gui,开始配置 OpenCV 的环境执行完成后会出现图形化工具

cmake-gui。指定我们源码的所在路径和构建目录。勾选 Advanced,再点击 Configure 或者 Generate。

 

 

4.选择 Unix Makefiles,然后选择 Specify options for cross-compiling,再点击 Next。

 

5.填写交叉编译器的路径,注意红色部分请填写自己的交叉编译器路径。

Operation System:topeet

Compilers C

/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc

Compilers C++

/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++

Targer Root:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/bin

指定交叉编译工具的具体路径,按个人路径指定,其他按图所示填写,如下图所示。

 

6. 我们还需要配置一些信息,点击如下图 CMAKE 处,在 CMAKE_EXE_LINKER_FLAGS 处添加上

-lpthread -lrt -ldl。添加这些是指定依赖库的链接参数。

 

7.再在 CMAKE_INSTALL_PREFIX 处指定安装目录,我们在上面已经新建了 install 安装目录。我们直接指定到该目录即可。如果不指定,它会默认安装到 Ubuntu 系统目录/usr/local 下。这样会直接替换我们/usr/local 下的库。

 

8.至此我们配置完,现在我们需要生成 Makefile 等文件,我们先点击 Configure,再点击 Generat 就可

以生成了。点击了 Generate 后看到信息像如下图一样,表明生成成功。若出现报错,请根据对话框里的内容指定的文件去自行去检查错误!一般都是交叉编译器路径不对造成的。配置完成生成文件后,我们点击

左上角关闭这个图形化配置界面即可。

 

1.3 编译 OpenCV 源码

1.在第 2 节配置完成后,首先在源码目录

opencv-3.4.1/3rdparty/protobuf/src/google/protobuf/stubs/common.cc 这个文件下添加#define

HAVE_PTHREAD 宏定义才可以编译的过。具体原因是 HAVE_PTHREAD 宏定义了 pthread 库。在如下位置

添加即可。

 

2.修改完成后,返回于是 build 目录下,可以看到 bulid 目录下已经准备了构建文件。

 

3.我们直接输入make -j 16构建即可。

 

 

 

4.编译完成如下图,如果有出错,先删除build 目录下的所有文件,按第2节重新再来一次! 

 

 

 

5.输入 make install 安装到指定目录

 make install

 

 

 

安装成功如下图

 

 

6.进入 install 目录下有如下几个目录表明成功。到此完成编译!

 

 

 

1.4 打包文件系统

1.将提供的QT文件下载完成后,放到 install 文件夹下。进入/QT/demo目录下。我们打开 opencv_pic.pro工程来看。

Ubuntu# vi opencv_pic.pro

注意 INCLUDEPATH 需要修改为自己 OpenCV 安装文件夹下的 include 路径!我们修改好后,将开始编译这个 Qt 工程

 

 

2.搭建完成后。在Ubuntu终端执行下面的指令来使能 Qt 交叉编译的环境变量。

Ubuntu# source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi

opencv_pic.pro 同目录下,执行 qmake 生成 Makefile,用于编译 Qt 工程,如下图所示:

 

 

 

3.再执行 make 编译 Qt 工程,编译完成如下图

 

 

 

4.编译完成后在当前目录生成可执行文件 opencv_pic,如下图所示。

5.我们需要把opencv_pic1.bmp 图片拷贝到开发板的/home/root/目录下。

 

然后把home/topeet/opencv/install/lib目录下也就是opencv的安装目录下的lib下的库文件拷贝到开发板Yocto系统的lib/目录下,如下图所示。

 

 

6.然后我们使用命令tar -vcjf ./rootfs.tar.bz2 .将文件系统打包

 

 

1.5 烧写文件系统

1.烧写前,我们先来修改mfgtools烧写工具的一些配置。

如果您的板子是EMMC的,修改cfg.init如下图所示:

 

 

 

如果您的板子是NAND的,修改cfg.init如下图所示:

 

 

 

 

2.rootfs.tar.bz2通过ssh软件放入mfgtools烧写目录mfgtools_for_6ULLProfilesLinuxOS Firmwarefileslinux下面,ubootkernel使用i.MX6ULL终结者光盘资料里开发板系统镜像下面的镜像,如下图所示路径的文件

 

 

 

3.拨码开关2键拨为1,其他键为0,设置成USB串行启动,然后点击下图按钮进行烧写。

 

 

 

烧写完成进度条会变成绿色,如下图所示:

 

 

 

1.6 测试开发板

如果您的板子是EMMC的,拨码开关拨成如下图所指箭头

 

 

 

如果您的板子是NAND的,拨码开关拨成如下图所指箭头

 

 

 

然后启动进入uboot模式,设置选择屏幕

5 寸屏幕:setenv lcdtype 5.0

9.7 寸屏幕:setenv lcdtype 9.7

10.1 寸屏幕:setenv lcdtype 10.1

塑胶壳 7 寸屏幕:setenv lcdtype 7.0

金属框 7 寸屏幕:setenv lcdtype 1024x600

HDMI 显示器:Setenv lcdtype hdmi

保存配置的命令:saveenv

最后在输入重启命令:reset

重启完毕,我们可以看到板子启动,串口控制台输入以下命令运行程序

 

 

 

最终在屏幕上显示图像

 

 

原文地址:https://www.cnblogs.com/topeet/p/13433346.html