【ARM嵌入式Linux】正点原子 I.MX6U-ALPHA 移植OpenCV

16 篇文章 11 订阅
5 篇文章 0 订阅

目录

一、下载安装通用交叉编译器

1.1 下载通用交叉编译器

1.2 安装通用交叉编译器

1.3 验证通用交叉编译器

二、搭建 OpenCV 3.4.1  的编译环境

2.1 下载 OpenCV 3.4.1  源码

2.2 配置 OpenCV 环境

2.3 编译 OpenCV 源码

三、QT例程使用 OpenCV

3.1 编译 QOpenCV  工程

3.2 测试 QOpenCV  工程

3.3 OpenCV演示效果图

附录: Linux Scp 命令 将QOpenCV从Ubuntu拷贝到ARM开发板中运行


所使用的环境:

windows 10 74bits

Ubuntu16.04或18.04

OpenCV 3.4.1

 

一、下载安装通用交叉编译器

1.1 下载通用交叉编译器

要为 I.MX6U 移植 OpenCV,需要使用的 ARM 平台交叉编译器,这里下载 Linaro 出品的交叉编译器,也就是正点原子 I.MX6U 嵌入式 Linux 驱动开发指南第 4.3 小节里推荐的 4.9 版本的编译器,这里重复写下载的方法。如果已经知道怎么安装或者已经安装可跳过第一章。下面是下载地址。https://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/arm-linux-gnueabihf/。

1.2 安装通用交叉编译器

将上面 1.1 小节下载好的通用交叉编译器压缩包拷贝到 Ubuntu 虚拟机,解压进行安装。编者是 64 位的 Ubuntu。所以通用 FileZilla 或者 WinSCP 拷贝 gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz 到 Ubuntu 虚拟机。

在 Ubuntu 目录下创建/usr/local/arm 文件夹,为下面安装到/usr/local/arm 这个文件夹做准备。

sudo mkdir /usr/local/arm

解压交叉编译器压缩包至/usr/local/arm 目录下,稍等片刻,解压完成如下。

sudo tar xf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz -C /usr/local/arm/

使用 vi 指令编辑/etc/profile 这个文件。

sudo vi /etc/profile

打开/etc/profile 以后,在末尾添加如下所示内容。

export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin

添加完成如下图,保存退出,重启系统。

1.3 验证通用交叉编译器

要使用此编译器,还要在 Ubuntu 上安装一些库。

sudo apt-get install lsb-core lib32stdc++6

在 1.2 小节修改环境变量重启系统后,在终端输入 arm-linux-gnueabihf-gcc -v 来查看安装的交叉编译器版本号。看到如下结果,表明成功!

arm-linux-gnueabihf-gcc -v

 

二、搭建 OpenCV 3.4.1  的编译环境

2.1 下载 OpenCV 3.4.1  源码

OpenCV 官方源码下载链接为 https://opencv.org/releases/ 可以看到有很多版本的 OpenCV源码下载。本次选择的是 opencv-3.4.1 版本源码,其他版本请自行选择编译,但是不确保其他源码编译不出现错误。请自行点击下载,国外网站,下载常失败。

拷贝 opencv-3.4.1.tar.gz 到 Ubuntu 虚拟机,使用下面的指令直接解压。然后进入解压后的目录查看。

tar xf opencv-3.4.1.tar.gz
cd opencv-3.4.1/
ls

2.2 配置 OpenCV 环境

创建 build、install 文件夹。build 为构建文件夹,install 为安装文件夹。

mkdir build install
ls

安装 cmake 和 cmake-gui 工具

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

进入 build 目录下,执行指令 cmake-gui,开始配置 OpenCV 的环境。

cd build
cmake-gui

指定我们源码的所在路径和构目录。按如下图设置,记得修改成个人的路径。再点击 Generate。

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

填写交叉编译器的路径,填写第一章安装的交叉编译器路径。

下面就是您配置的信息,可以配置很多项,比如要编译哪些库等都可以在此选择编译或者不编译。

点击 CMAKE,在 CMAKE_EXE_LINKER_FLAGS 处添加上“-lpthread -lrt -ldl”添加这些是指定依赖库的链接参数。

再在 CMAKE_INSTALL_PREFIX 处指定安装目录,我们在上面已经新建了 install 安装目录。如果不指定,它会默认安装到 Ubuntu 系统目录/usr/local 下。再点击关闭。到这里我们已经完成配置

至此我们配置完,现在我们需要生成 Makefile 等文件,我们先点击 Configure,再点击 Generate 就可以生成了。

我这里的界面如下图所示(个人路径不一样):

2.3 编译 OpenCV 源码

先不要急着输入 make。首先在源码目录 3rdparty/protobuf/src/google/protobuf/stubs/common.cc 这个文件下第 33 行添加#define HAVE_PTHREAD 宏定义才可以编译的过。具体原因是 HAVE_PTHREAD 宏定义了 pthread 库。在如下位置添加即可。

cd .. // 返回 opencv 源码顶层目录
vi 3rdparty/protobuf/src/google/protobuf/stubs/common.cc

修改完成后,返回于是 build 目录下,可以看到 bulid 目录下已经准备了构建文件。我们直接输入 make 构建即可。

cd build/
make -j 16

编译完成如下图。如果有出错,先删除 build 目录下的所有文件,按第 2.2 小节重新再来一次!cmake-gui 尽量一次配置成功。

输入 make install,把库安装在 2.2 小节我们创建的 install 目录下。然后使用 ls 指令查看安装目录 install。看到有如下图一样的文件,表明安装成功。

make install
ls ../install

至此我们已经编译完成 OpenCV 了,把 install 文件夹的 lib 下的所有库,拷贝到文件系统下的/usr/lib 目录下,写好程序调用即可!

三、QT例程使用 OpenCV

3.1 编译 QOpenCV  工程

正点原子提供 OpenCV Qt 例程,例程作者已经上传到百度云。请在复制链接到浏览器打开!
链接:https://pan.baidu.com/s/1z-CdhbcmgdpPZMzo9WpZUA                提取码:6rn0

下载完成后,把 QOpenCV 文件夹放到 install 文件夹下。

为什么要放到 install 文件夹下呢,这是因为我们在工程 QOpenCV.pro 文件里定义了 lib 库的路径是在 QOpenCV.pro 的../../lib 下。我们打开 QOpenCV.pro 工程来看。
进入 QOpenCV/opencvdemo 目录下。

我们修改好后,将开始编译这个 Qt 工程。

在 Ubuntu 终端执行下面的指令来使能 Qt 交叉编译的环境变量。

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

在 QOpenCV.pro 同目录下,执行 qmake 生成 Makefile,用于编译 Qt 工程。

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

编译完成后在当前目录生成可执行文件 QOpenCV,我们需要把它和 resources 文件夹拷贝到文件系统里。

补充说明:
如果我们不是把QOpenCV这个工程放置于lib同级目录下,QOpenCV.pro就会编译找不到路径。
而且库必须是位于../../lib 下,就算我们指定 lib 具体路径,如果不在../../lib 就会编译报如下警告!
这是因为../../lib/libopencv_core.so 和../../lib/libopencv_imgproc.so 这两个库它自带路径../../lib。

3.2 测试 QOpenCV  工程

请使用正点原子出厂的文件系统!自己编译的 busybox 或 buildroot 文件系统是不具备 Qt 库的,
Qt 应用程序是运行不了的。
首先在串口终端里执行
USER# /etc/init.d/psplash.sh //关闭原来的桌面应用程序

需要拷贝 install/lib 文件夹下的 opencv 相关库拷贝到开发板的/lib 目录下。(这里一定是 lib 目录下,其它目录不行,即使设置了环境变量。具体原因未知!)

把下面这些库拷贝到文件系统路径/lib 下。

如下图作者已经拷贝到开发板的/lib 目录下了

同时拷贝了编译出来 Qt opencv 应用程序及 resouces 资源文件到/home/root 目录下。如下图。

在串口终端里直接执行 QOpenCV Qt 应用程序

./QOpencv

lcd 显示屏上已经出现应用程序的示例。因为应用程序是设定 800*480 的分辨率的。

如下图,点击原图,应用程序则不对图像处理。

点击边缘检测,可以看到这辆汽车已经被线条勾勒了。图片处理速度非常快。效果还是不错的。

3.3 OpenCV演示效果图

原图:

边缘检测:

灰度化;

阈值化:

腐蚀:

模糊:

锐化:

附录: Linux Scp 命令 将QOpenCV从Ubuntu拷贝到ARM开发板中运行

软件工具:Xshell 6

连接协议:ssh

操作命令:scp

 

查看开发板的IP地址

配置SSH连接的IP及端口

用户名:root    密码:出厂系统默认为空

 

QOpenCV的QT应用程序和resources资源图片文件夹路径为:

/home/hanhui/tools/opencv-3.4.1/install/QOpenCV/opencvdemo

 

 

 

查看Ubuntu的IP地址

 

具体操作指令如下:

scp hanhui@192.168.254.107:/home/hanhui/tools/opencv-3.4.1/install/QOpenCV/opencvdemo/QOpenCV ./

scp hanhui@192.168.254.107:/home/hanhui/tools/opencv-3.4.1/install/QOpenCV/opencvdemo/resources -r ./

结果如下:

       

 

运行QOpenCV应用程序:

和之前演示效果一样

 

 

 

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值