搜索

121

主题

128

帖子

665

积分

网站编辑

Rank: 8Rank: 8

积分
665
发表于 2021-6-5 10:48:04 5649 浏览 0 回复

i.MX6开发板QT系统移植OpenCv2.4.9

本帖最后由 翠花儿 于 2021-6-5 11:15 编辑

OpenCV 是目前开源项目中最著名的基于机器视觉方向的图像处理的开发包,目前已经有被移植到嵌入式 Linux 环境上。本文介绍了 OpenCV 交叉编译的基本步骤,及结合 Qt 例程去进一步学习 OpenCV 识别图像。 相关的配套资料在网盘资料“iTOP-i.MX6开发板资料汇总(不含光盘资料)\08_iTOP-i.MX6开发板Linux系统开发资料\22-QT系统移植OpenCv2.4.9”目录。
我们需要准备的资料:
1. 开发板使用的是 i.MX6Q开发板,开发板里面是QT5.7文件系统,其他的文件系统移植方法也通用。
2. 使用 Ubuntu14.04
3. 提供 opencv 源码“opencv-2.4.9.zip”
4. QT 测试例程
1 安装交叉编译工具
交叉编译器为:arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2。设置交叉编译器请参考i.MX6Q-开发板使用手册21.1章节搭建交叉编译环境。
2 搭建opencv编译环境
1.我们将文件中提供的“opencv-2.4.9.zip”也就是opencv源码通过ssh软件移ubuntu下并解压,作者将该文件放入了“/home/topeet/iMX6Q/opencv2.4.9/”目录下,新建opencvbuild和opencvinstall文件夹,opencvbuild是构建目录,opencvinstall是安装目录如下图所示。
2.OpenCV 2.2以后版本需要使用Cmake生成makefile文件,因此需要先安装cmake。
ubuntu下安装cmake比较简单,使用命令“apt-get install cmake”,如下图所示。
3.使用命令“cmake --version”查看版本,测试是否安装成功。如下图所示。
4. 我们使用命令“cd opencv-2.4.9/”进入源码目录。如下图
5.使用命令“cmake-gui”打开cmake的gui界面,开始进行配置。如下图示所示。
6.我们在“where is the source code”中填入电脑中opencv源码的位置,“where to build the binaries”填入生成make编译文件的位置,然后点击configure按钮。如下图所示。
7.选择最后一项,然后点击next,如下图所示。
8.Operating System 选择目标系统“Linux”,
Compilers中选择交叉编译器的gcc和g++,“/usr/local/arm/arm-2014.05/bin/arm-none-linux-gnueabi-gcc”“/usr/local/arm/arm-2014.05/bin/arm-none-linux-gnueabi-g++”,Target Root选择交叉编译器的路径“/usr/local/arm/arm-2014.05/arm-none-linux-gnueabi/bin”,include Mode选择“search only in target root”,其他如图所示,点击finish.如果出现配置错误的信息,关闭警告配置即可。
9. 此时主界面如下图所示,这时Cmake会读取程序的一些配置信息,可以在下图红框中对每一个编译选项进行修改,将CMAKE_INSTALL_PREFIX改成你想要的路径,作者改成了“/home/topeet/iMX6Q/opencv2.4.9/opencvinstall”,如下图所示。
10 在search中搜索WITH_CUDA,取消勾选,最后点Generate,在编译路径/home/topeet/opencv2.4.9/opencvbuild下就生成Makefile。
11 在search中搜索CMAKE_EXE_LINKER_FLAGS,Value值修改为
-lpthread -lrt -ldl,如下图所示:
12 修改完,点击Generate,左上角点击X关闭即可,如下图所示:
13 在 /home/topeet/opencv2.4.9/opencvbuild目录下输入命令make编译。编译部分截图如下所示。
编译完成之后。如下图所示:
14 使用指令“make install”,部分截图如下所示。
安装完成后,我们可以在“/home/topeet/iMX6Q/opencv2.4.9/opencvinstall”目录下看到编译生成的库文件。至此,移植工作基本完成。
3 QT程序编译
1.将提供的 QT 文件下载完成后,放到 /home/topeet/iMX6Q/opencv2.4.9/opencvinstall/文件夹下。进入/QT/demo 目录下。我们打开 opencv_pic.pro 工程来看。
Ubuntu# vi opencv_pic.pro
注意 INCLUDEPATH 需要修改为自己 OpenCV 安装文件夹下的 include 路径!lib的目录必须是/QT/demo目录的上两级目录。
INCLUDEPATH +=  /home/topeet/iMX6Q/opencv2.4.9/opencvinstall/include   \
                /    \
                /home/topeet/iMX6Q/opencv2.4.9/opencvinstall/include/opencv2  \
                /home/topeet/iMX6Q/opencv2.4.9/opencvinstall/include/opencv \
                /usr/local/include
LIBS        += ../../lib/libopencv*  \
                 ../../lib/libopencv_highgui.so  \
                ../../lib/libopencv_core.so \
                ../../lib/libopencv_objdetect.so    \
                ../../lib/libopencv_imgproc.so  \
                ../../lib/libopencv_imgcodecs.so \
                ../../lib/libopencv_calib3d.so  \
                ../../lib/libopencv_photo.so \
                ../../lib/libopencv_contrib.so \
                ../../lib/libopencv_stitching.so \
                ../../lib/libopencv_legacy.so \
                ../../lib/libopencv_superres.so \
                ../../lib/libopencv_features2d.so \
                ../../lib/libopencv_ml.so \
                ../../lib/libopencv_ts.a \
                ../../lib/libopencv_flann.so \
                ../../lib/libopencv_nonfree.so \
                ../../lib/libopencv_video.so \
                ../../lib/libopencv_gpu.so \
                ../../lib/libopencv_objdetect.so \
                ../../lib/libopencv_videostab.so \
                ../../lib/libopencv_highgui.so \
                ../../lib/libopencv_ocl.so \
因为编译opencv的编译器和编译qt的编译器版本的差异,我们需要在widget.cpp文件添加下面的宏定义
# define _GLIBCXX_USE_CXX11_ABI 0
2.搭建完成后。在 Ubuntu 终端执行下面的指令来使能 Qt 交叉编译的环境变量。
Ubuntu# source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-
poky-linux-gnueabi
然后输入qmakemake,如下图所示:
make编译完成如下图:
3.编译完成后在当前目录生成可执行文件 opencv_pic,如下图所示。
4.我们需要把opencv_pic和 1.bmp 图片拷贝到开发板的/home/topeet/目录下。
然后把home/topeet/iMX6Q/opencv2.4.9/opencvinstall/lib目录下也就是opencv的安装目录下的库放入开发板lib目录下。
5.进入home/topeet目录下,赋予文件权限,然后执行./opencv_pic,发现有以下错误
6.出现上步骤的问题是因为找不到库,我们需要建立软链接后,再次查看,发现软链接已经建立好了
ls /lib/ -all|grep ld
ln -s /lib/ld-2.8.so /lib/ld-linux-armhf.so.3
7 再次输入./opencv_pic命令运行,如下图所示,出现下面的问题。
我们将资料包里面如下图所示的俩个库文件拷贝到开发板lib目录下。
再次输入./opencv_pic命令运行,如下图所示:
最终在屏幕上显示图像

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

返回列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

登录或注册

官方客服

QQ:2551456065

官方QQ群

195631883

扫一扫关注迅为公众号

群号652692981

 
快速回复 返回顶部 返回列表