OpenCV与QT联合开发示例

Posted noticeable

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV与QT联合开发示例相关的知识,希望对你有一定的参考价值。

1、OpenCV及QT开发环境搭建

windows基于vs2017的opencv安装

windows下安装QT并与visual studio 2017搭建开发环境

 

 

2、工程创建

1、导入Qt项目

选择:QT VS Tools->Open Qt Project File(.pro)…

技术分享图片

 

2、新建Qt项目

1、选择:文件->新建->项目->测试->Qt GUI Application,输入工程名,下一步…进行新建。

技术分享图片

 

2、“next”下一步

技术分享图片

 

3、选择依赖的模块:最基础的QtCore、QtGui、QtWidgets还有一些音/视频、网络、数据库、XML、OpenGl相关的模块,需要使用的直接勾选即可。

技术分享图片

 

4、finish(具体设置以后有机会在写)

技术分享图片

 

3、OpenCV工程创建

1、 选择test.ui -> 打开方式 -> Qt Designer -> 确定

技术分享图片

 

2、 拉一个OPenGL控件到窗体上

技术分享图片

 

3、 改控件名字为mat->在对象查看器中选中控件——>右键选择提升为...

技术分享图片

 

4、 提升的类名称:MatView -> 点击添加 ->提升 -> ctrl + F 保存界面 ,如下图

技术分享图片

 

5、 Header Files右键 -> 类导向 -> 添加类 -> 类命:MatView -> 完成 -> 确认,如下图

技术分享图片

6、点击添加类

 

技术分享图片

 7、点击应用并确定

技术分享图片

 

8、 MatView.h代码

#pragma once
//导入相应的库
#include <QOpenGLWidget>
//继承QOpenGLWidget
class MatView :public QOpenGLWidget
{
   Q_OBJECT
public:
//构造函数
   MatView(QWidget *p);
   ~MatView();
   //重载一个函数
   void paintEvent(QPaintEvent *e);
};

技术分享图片

 

 

 

9、 MatView.cpp代码

#include "MatView.h"
#include<opencv2/core.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/imgcodecs.hpp>
#include <QImage>
#include <QPainter>
using namespace cv;
//重载一个函数,只要窗口发生变化他都会调用,这个函数不能处理业务逻辑,只做处理图像
void MatView::paintEvent(QPaintEvent *e) {
	    Mat src = imread("D://1.jpg");
	    QImage img(src.data, src.cols, src.rows, QImage::Format_RGB888);
	    QPainter painter;
	    painter.begin(this);
	    painter.drawImage(QPoint(0, 0), img);
	
}
//构造函数,调用父类的,因为父类还有处理在里面,所以要调用它
MatView::MatView(QWidget *p) :QOpenGLWidget(p)
{
}
MatView::~MatView()
{
}

  技术分享图片

 

 


10、 main.cpp代码不用改动

技术分享图片

 

11、 导入OpenCV库,参照windows基于vs2017的opencv安装

12、 运行代码

代码不重要,重要是如何配置,直接运行代码,可能因为系统+环境不同出错

13、 效果图

技术分享图片

 

参考资料:

11.VS2015+OpenCV3.2+QT软件/插件(QT篇1) --- OpenCV从零开始到图像(人脸 + 物体)识别系列

OpenCV实例精解

以上是关于OpenCV与QT联合开发示例的主要内容,如果未能解决你的问题,请参考以下文章

opencv实战-联合QT资料搜集

QT+VS+OpenCV联合开发-创建第一个QT程序以及快捷键学习

Qt+OpenCV联合开发(二十三)--图像直方图(calcHist)

Qt与FFmpeg联合开发指南——编码:代码流程演示

Qt与FFmpeg联合开发指南——编码:完善功能和基础封装

OpenCVQt + OpenCV 开发配置 + 入门知识(代码示例)