重点:arm-linux-gcc 建议使用4.8以上的版本来支持-std=C++11

第一:先编译opencv的第三方库和源码移植到arm板上

系统版本:Ubuntu16.04
版本:opencv3.2.0
获得opencv在arm板上的库和第三方在arm上的库
推荐楷尘·极客的:opencv移植arm全过程四部曲
https://blog.csdn.net/KayChanGEEK/article/details/78543779
配套其提供的第三方依赖包更佳
https://download.csdn.net/download/kaychangeek/10120278
64位的编译第三方库时要将编译后的库放在/usr/local 的子目录下,放在其他地方有可能会编译失败

第二:在Linux中安装qt

qt源码下载:http://download.qt.io/archive/qt/
我下载的版本:
qt-opensource-linux-x64-5.4.0.run 安装在Linux上的

第三:编译qt移植到arm开发板上

我下载的版本是:
qt-everywhere-opensource-src-5.3.1.tar.xz 移植到arm上的板子

qt移植arm板是个坑啊,花了我很长的时间,下面这个教程我先后下载了qt5.4.0和qt5.12.0的出现了

  1. recipe for target ‘verifyspec.o’ failed
  2. error: unrecognized command line option “-std=gnu++11” > Makefile:168: recip
    等错误,没有解决,下载了qt5.3.1后就没有错误了,可能是之前有操作失误没有发现。

华清远见:QT 5.3开发及移植(2)
http://emb.hqyj.com/Column/3766.html
慢慢等待make我花了一个多钟

或者
大水猫:【TINY4412】QT5移植笔记:(2)QT5.7移植到Linux
https://blog.csdn.net/sinat_20006769/article/details/79081154

建议使用Qt5.7版本的。

第四:opencv+qt的结合在Linux上运行

编译获得opencv在linux下的库
推荐墨客墨客:Ubuntu14.04下Qt5+opencv3.0安装和配置
https://blog.csdn.net/u011831771/article/details/78482306
若出现运行程序时出现error while loading shared libraries的问题请参考
https://blog.csdn.net/weixin_41215479/article/details/88628625

qt使用其他人已经编译好的其他版本的qt库,出现qt没有被正确的安装,请运行make install,请参考:
https://blog.csdn.net/liukang325/article/details/53407401
使用其他人的库,不知道行不行。可自行尝试,我没有试过

opencv +qt在Linux上的测试用例
创建一个Qwidget

demo.pro

#-------------------------------------------------
#
# Project created by QtCreator 2019-03-17T06:02:00
#
#-------------------------------------------------QT       += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = demo2
TEMPLATE = appSOURCES += main.cpp\widget.cppHEADERS  += widget.hFORMS    += widget.uiINCLUDEPATH += /usr/local/include \/usr/local/include/opencv \/usr/local/include/opencv2LIBS += /usr/local/lib/libopencv_highgui.so \/usr/local/lib/libopencv_core.so \/usr/local/lib/libopencv_highgui.so \/usr/local/lib/libopencv_imgcodecs.so.3.2 \/usr/local/lib/libopencv_highgui.so.3.2

widget.h和widget.cpp 不改变

main.cpp

#include "widget.h"
#include <QApplication>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;int main()
{namedWindow( "src", WINDOW_AUTOSIZE );Mat src1 = imread( "/mnt/hgfs/share/1.jpg" );while(1){imshow( "src", src1 );char c = waitKey(30);if( 27==c )return 0;}}

出现The program has unexpectedly finished.的错误是因为图片路径问题。

第五:Qt+opencv arm版在板子上运行

添加arm版本的qt到qt应用中。atm版本的qt库在第三步中得到

遥_望:linux下如何利用QtCreator编译ARM版本的Qt程序
https://blog.csdn.net/yaowangII/article/details/78552083

arm版本的qt+arm版本的opencv在板子上运行测试用例

arm上使用opencv,如果用cvnamedwindow显示,自带的的窗口依赖gtk,可以用qt的label控件显示,先将Mat转成QImage,然后显示在label就可以了。
思路:Mat–QImage–QPixmap–QLabel

创建Qwidget

arm_demo.pro

#-------------------------------------------------
#
# Project created by QtCreator 2019-03-19T05:42:55
#
#-------------------------------------------------QT       += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = display_mat
TEMPLATE = appSOURCES += main.cpp\widget.cppHEADERS  += widget.hFORMS    += widget.uiINCLUDEPATH += /opt/opencv_arm/opencv-3.2.0/output/include \/opt/opencv_arm/opencv-3.2.0/output/include/opencv \/opt/opencv_arm/opencv-3.2.0/output/include/opencv2LIBS += /opt/opencv_arm/opencv-3.2.0/output/lib/libopencv_highgui.so \/opt/opencv_arm/opencv-3.2.0/output/lib/libopencv_core.so \/opt/opencv_arm/opencv-3.2.0/output/lib/libopencv_imgcodecs.so.3.2.0 \/opt/opencv_arm/opencv-3.2.0/output/lib/libopencv_videoio.so.3.2 \/opt/opencv_arm/opencv-3.2.0/output/lib/libopencv_imgproc.so.3.2 \

widget.h和main.cpp不改变
widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>using namespace cv;Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);Mat Img;Img = imread("1.jpg");cvtColor(Img,Img,CV_BGR2RGB);ui->label->setPixmap(QPixmap::fromImage(QImage(Img.data,Img.cols,Img.rows,Img.cols*Img.channels(),QImage::Format_RGB888)));
}Widget::~Widget()
{delete ui;
}

在widget.ui上拖拽一个label控件:objectName:label
当显示出下面这句话时就显示成功了

Failed to start program. Path or permissions wrong?

回到工程的build-arm_demo-ARM-Debug 目录
file arm_demo ,显示就是ARM文件,可将其拷贝到开发板上运行。

总结:其实第四步是可以不用做的,只是因为你用arm版本的qt在qt应用上是没有界面显示的,成功只会显示:Failed to start program. Path or permissions wrong?,需要把可执行程序拷贝到板子上。但第四步运行出来的程序是有界面显示的,就不必每次都把程序拷贝到板子上,第四步执行成功的程序不能直接运行在板子上,还是要换成arm版本的qt来运行才能下载到板子上。因为这两者之间就库和编译工具的不同。

Qt+OpenCV在arm板上运行实现思路相关推荐

  1. Qt程序在arm板上运行

    1.Qt中的库需要拷贝到arm板上: 2.配置环境变量,参考该文. 总结: 1.可执行程序在终端中运行前,需要配置好环境变量,我们用export的形式配置的,这种形式只在当前终端中生效(因为,如果我们 ...

  2. Qt——用在ARM板上的Mplayer(1.3.0,1.0rc4)安装编译步骤!还有,Mplayer背景抖动闪烁问题解答,终于来了!

    注意:若转载,请贴上链接"https://blog.csdn.net/qq_41042595/article/details/112308184",如若发现抄袭或未标明来源现象,都 ...

  3. QT程序到arm板(s5pv210)的移植之旅

    前记: 由于毕设的原因,将来需要移植QT程序到arm板子运行,故有此文. 看博客寻资料,看到一位作者写道:知识来源于互联网,必将回报互联网.赞. 介于从陌生到熟悉的折腾,故将移植过程记录,发文,以己省 ...

  4. 【教程】制作能在ARM板上直接运行的gcc本地编译器

    编译好的程序的下载链接:百度网盘 请输入提取码(提取码:ocmm) 概述 通常情况下,我们是在电脑里面开一个Linux虚拟机, 在虚拟机里面用交叉编译工具链编译好可执行文件后,将可执行文件拷贝到板子里 ...

  5. 没有安装opencv的linux系统上运行基于opencv,Linux环境下安装OpenCV

    我使用的是ubuntu10.04系统.其他系统可能有些命令会不同. 由于同学需要在ARM板上移植OPenCV,而我之前有在的经验,他就叫我帮手. 我就试下先在我的ubuntu上安装OpenCV.安装成 ...

  6. 基于I-MX287A的mqtt远程控制ARM板上LED灯小项目总结

    最近在学linux嵌入式技术,自己做了一个在周立功的I-MX287A开发板上实现的,基于MQTT远程控制的小项目,其中用到了一些比较好玩和有趣的技术,在这里自己记录分享一下. 额,让我想想该从和处开始 ...

  7. wxX11移植到arm板上

    [原]移植wxX11到开发板上 2012-5-18阅读467 评论0 最近几天由于工作安排,要将wxX11程序移植到arm开发板上.一连工作了好几天,终于可以在板子上显示出一个"X" ...

  8. 在VIM3开发板上运行无修改的iOS内核镜像

    在VIM3开发板上运行无修改的iOS内核镜像 之前在网上有看到过人使用QEMU成功的把IOS内核运行起来且成功挂载根文件系统的相关文章.理论上能在QEMU上跑成功,在真实的ARMv8开发板上运行起来也 ...

  9. 使用QT程序控制Linux开发板上的继电器(一)

    `使用QT程序控制Linux开发板上的继电器(一)` 测试平台介绍 测试系统接线 编写PlatformIO驱动程序 修改设备树 烧录设备树 Platform字符设备驱动设备框架 完善驱动框架 编写测试 ...

  10. 手把手教你在ARM板上写一个驱动程序!

    摘要:搞嵌入式有两个方向,一个是嵌入式软件开发(MCU方向),另一个是嵌入式软件开发(Linux方向).其中MCU方向基本是裸机开发和RTOS开发.而Linux开发方向又分为驱动开发和应用开发.其中应 ...

最新文章

  1. Citrix Receiver For Linux 预览版
  2. Nginx允许跨域和禁止跨域操作
  3. IBM一周内拥有10万Lotus Symphony用户
  4. oracle数据库迁移方案二
  5. python基础语法有哪些-Python语法基础归纳大全
  6. 我的4条产品设计工作观
  7. 2016年 第7届 蓝桥杯 Java B组 省赛解析及总结
  8. CF-196 D.The Next Good String(hash)
  9. 微信sdk swift版_使用Swift 4的iOS版Google Maps SDK终极指南
  10. java dumpstack_Java获取执行进程的dump文件及获取Java stack
  11. 云科技网络验证源码_面向虚拟化架构和容器云的开源安全工具
  12. OpenCV实现图片素描风(调用摄像头+中值滤波+拉普拉斯边缘检测)
  13. 二维 稳态边界层问题MATLAB,第三章 边界层理论.ppt
  14. 计算机aero背景黑,win7系统如何打开和关闭Aero特效
  15. Excel如何将多个工作簿数据合并到一起
  16. 大芒果单机修改服务器名字,大芒果服务器怎么创建GM账号?
  17. java public interface_Java 接口interface的基础
  18. multipartfile获取数据_关于使用Springmvc的MultipartHttpServletRequest来获得表单上传文件的问题,万分感谢~...
  19. 论文笔记 -- Fast-LIO -- ESIKF溯源
  20. Android属于绑定服务特点是,Android P HIDL服务绑定模式与直通模式的分析 (原创)

热门文章

  1. OA系统(海信集团)双因素身份认证解决方案
  2. JAVAweb开发技术-------(七)POI导入导出excel技术
  3. Android Mms专题之:联系人管理
  4. 纸筒制作机器人_卡纸手工制作方法_机器人DIY制作教程图解
  5. 科研工具:公式书写神器(Mathpix Snipping Tool)
  6. Acer 4750 安装黑苹果_傻瓜式黑苹果安装神器
  7. 组织行为学笔记-第一章
  8. 6阶子群同构于s3或者z6_近世代数复习题
  9. Photoshop的安装教程
  10. mysql的性能瓶颈_Mysql性能优化(一) - 性能检测与瓶颈分析