你好!这里是风筝的博客,

欢迎和我一起交流。


之前在arm移植好了opencv:移植opencv到嵌入式arm详细过程
而且我之前也弄好了qt,刚好可以用来结合使用。
在qt里使用opencv在arm开发板显示一张图片

在qt里面创建一个工程:

#include "widget.h"
#include "ui_widget.h"#include<opencv2/imgproc/imgproc.hpp>
#include<opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);IplImage* srcImage= cvLoadImage("girl.jpg");//加载图片cvNamedWindow("Image",1);//创建窗口cvShowImage("Image",srcImage);//显示图像cvWaitKey(0);//等待按键cvDestroyWindow("Image");//销毁窗口cvReleaseImage(&srcImage);//释放图像
}Widget::~Widget()
{delete ui;
}

很简单的例子,但是用到了opencv,所以在工程和Makefile里要进行一些修改:
修改.pro工程文件,我的工程时load_image:
vi load_image.pro
找到:

HEADERS  += widget.h

修改为:

HEADERS  += widget.h\/usr/local/opencv/install_opencv/lib/libopencv_core.so \/usr/local/opencv/install_opencv/lib/libopencv_highgui.so \/usr/local/opencv/install_opencv/lib/libopencv_imgproc.so \/usr/local/opencv/install_opencv/lib/libopencv_video.so

这些库文件,主要是用到什么就加什么。
然后再在底下添加:

INCLUDEPATH += include/opencv\include/opencv2\include

把opencv的头文件也包含进来。

接着修改Makefile文件:
找到:

LIBS          = $(SUBLIBS) -L/work/qt/my_qt/lib -lQt5Widgets -lQt5Gui -lQt5C    ore -lpthread 

修改为:

LIBS          = $(SUBLIBS) -L/work/qt/my_qt/lib -lQt5Widgets -lQt5Gui -lQt5C    ore -lpthread -I/usr/local/opencv/install_opencv/include/opencv/ -L/usr/loca    l/opencv/install_opencv/lib/ -lopencv_core -lopencv_highgui -lrt

主要就是添加后半句话,其实在哪加无所谓,加上上去就好了。

最后make即可编译可执行文件,复制到arm开发板上,执行即可!
原图:

效果图:

可以看到,使用opencv的cvShowImage函数,屏幕上面会有一个栏,不怎么好看,我们可以使用另一个办法,直接把图片用QT里的label显示,使用imread函数:
cvLoadImage和imread返回值略有差异,过去的opencv处理图像倾向使用IplImage类型。现在的opencv更倾向于将图像、矩阵等等都统一使用Mat类型上。差别不大。

#include "widget.h"
#include "ui_widget.h"
#include <QPixmap>
#include <QLabel>
#include "widget.h"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>using namespace cv;
using namespace std;Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);QLabel *label_image = new QLabel(this);Mat srcImage1= imread("girl.jpg");//加载图片Mat rgbImage;if(!srcImage1.data){cout << "picture error!" << endl;}cvtColor(srcImage1,rgbImage,CV_BGR2RGB);//转换颜色空间,QImage是RGB排列,而Mat 是 BGRQImage img=QImage((const unsigned char *)(rgbImage.data),rgbImage.cols,rgbImage.rows,rgbImage.cols*rgbImage.channels(),QImage::Format_RGB888);//创建QImage对象label_image->setPixmap(QPixmap(QPixmap::fromImage(img)));label_image->resize(label_image->pixmap()->size());label_image->move(0,0);
}Widget::~Widget()
{delete ui;
}

得出的效果图就没有边框了:

不过这个也有个缺点,图片小时,不能填满屏幕,就看到左边是缺的黑框了
后来,我又发现个问题,QImage是RGB,所以我用了cvtColor做转换,那要是我想使用灰度图呢?
cvtColor(srcImage, srcImage, CV_BGR2GRAY);//转为灰度图
那转为灰度图了就不是RGB了。就不能使用QImage显示了,
所以得用第一个那个程序,
IplImage* srcImage= cvLoadImage(“girl.jpg”);//加载图片
修改为:
Mat srcImage= imread(“girl.jpg”);//加载图片
接着:
cvShowImage(“Image”,srcImage);//显示图像
修改为:
imshow(“Image”,srcImage);//显示图像
最后,
cvReleaseImage(&srcImage);//释放图像
修改为:
srcImage.release();
即可。
这样就能使用cvtColor处理了

或者不改,直接:

//转变为灰度图  IplImage *Grayimage = cvCreateImage(cvGetSize(srcImage),IPL_DEPTH_8U, 1);  cvCvtColor(srcImage,Grayimage,CV_BGR2GRAY);

opencv+QT在嵌入式arm下显示图片相关推荐

  1. 【原创】QT在嵌入式系统中显示中文的方法

    [原创]QT在嵌入式系统中显示中文的方法 此篇文章主要借鉴:http://zzqh007.blog.163.com/blog/static/44434847201011312168296/ 移植QT4 ...

  2. 【机器视觉】Qt联合Halcon编程之显示图片

    00. 目录 文章目录 00. 目录 01. 概述 02. 编写Halcon程序 03. Halcon程序导出C++文件 04. 创建Qt图形界面项目 05. Qt集成Halcon程序 06. 附录 ...

  3. IE下 显示图片会多出一个边框的问题

    IE浏览器下,有的图片会出现一个多余的边框 注意: ** 你的图片是否为超链接? ** 如果,图片 <img>标签的父元素中有<a>标签,那么在ie浏览器下查看图片的时候,一般 ...

  4. Qt使用QPainter绘制方式显示图片

    Qt使用QPainter绘制方式显示图片 文章目录 Qt使用QPainter绘制方式显示图片 1.前言 2.主要代码 3.实现效果 4.源代码 更多精彩内容

  5. opencv 使用命令行参数法显示图片

    imread()函数 返回值,Mat 类型, 即返回读取的图像,读取图像失败时返回一个空的矩阵对象(Mat::data == NULL) 参数1 filename, 读取的图片文件名,可以使用相对路径 ...

  6. OpenCV学习笔记:反色显示图片、鼠标事件、键盘事件和窗口滑动条操作

    环境CentOS7 g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16) $ pkg-config --modversion opencv 2.4.13 参照< ...

  7. Qt实现在QLabel上显示图片并进行线条/矩形框/多边形的绘制

    文章目录 前言 一.事件过滤器 二.示例完整代码展示 三.下载链接 总结 前言 本文主要讲述了使用QPainter在QLabel上进行图片的显示,并使用事件过滤器让QLabel捕获QEvent::Pa ...

  8. Qt——P26 Label控件显示图片

    先把图片资源添加到Qt ui界面创建label //利用lable 显示图片ui->label_image->setPixmap(QPixmap(":/picture/abc.p ...

  9. Unity3D基础22:GUI Texture组件/Sence下显示图片

    前文:https://blog.csdn.net/Jaihk662/article/details/86764583(UI简介) 一.GUI Texture组件 第一步:通过菜单→Component→ ...

最新文章

  1. redis学习-02
  2. 视频直播:实时数据可视化分析
  3. Oracle segment啥意思,关于oracle数据库段segment的小结
  4. 从鸿星尔克到蜂花,国货靠「卖惨」能留住年轻人吗?
  5. C语言实现文件复制 fgetc、fputc函数的使用 带详细注释版
  6. MySql、Oracle、MSSQL中的字符串的拼接
  7. 数据库基本----SQL语句大全(转载)
  8. MySQL 批量插入,如何不插入重复数据?
  9. Kafka配置6--Windows下设置和增加SASL用户或用户权限
  10. python按钮代码_Python QPalette.Button方法代码示例
  11. 液晶显示器模拟接口时,屏幕重影照片
  12. 鸡肋的 Nero BurnLite 10
  13. 解决excel里面“取消隐藏”是灰色的问题
  14. element-ui —— el-tooltip 超出部分显示省略号,鼠标悬浮显示详情
  15. ECN Trade:商品货币依然坚挺 澳元动能强劲
  16. ubuntu18.04 编译rtt-lwr
  17. echarts百分比柱形图
  18. 现在快手流量怎么样?如何增加流量?
  19. render createElement JSX
  20. 2022年欧莱雅-联合国教科文组织 “世界杰出女科学家成就奖”获奖人名单公布...

热门文章

  1. MyBatis(一)——初识MyBatis
  2. 圣手三代,圣手二代蓝牙连接pin码消失
  3. android开发游记:集成百度定位SDK进行实时定位 获取当前城市地理信息
  4. web前端面试题-css方面
  5. eclipse 导出linux rcp,导出一个RCP程序(Exporting an RCP Application)
  6. 被“鼹鼠”支配的恐惧
  7. 什么是MySQL的回表?
  8. 达梦数据库安装学习总结--DCA下篇
  9. Mixly 自定有OLED
  10. CMake安装时报错:The current CMakeCache.txt directory /home/joes/jiao/01_YHWorker/03_setupbag/cmake-3.19.2