1、代码:
1)opencv_imwrite_Q.pro 添加:
INCLUDEPATH+= D:\opencv-3.1.0\opencv\build\include
win32:CONFIG(release, debug|release): LIBS += -LD:/opencv-3.1.0/opencv/build/x64/vc12/lib/ -lopencv_world310
else:win32:CONFIG(debug, debug|release): LIBS += -LD:/opencv-3.1.0/opencv/build/x64/vc12/lib/ -lopencv_world310d
else:unix: LIBS += -LD:/opencv-3.1.0/opencv/build/x64/vc12/lib/ -lopencv_world310
INCLUDEPATH += D:/opencv-3.1.0/opencv/build/x64/vc12
DEPENDPATH += D:/opencv-3.1.0/opencv/build/x64/vc12
2)主函数 main.cpp 添加:
#include "Widget_op.h"
#include <QApplication>
#include <QCoreApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget_op w;
w.show();
return a.exec();
}
3)Widget_op.h (主窗口头文件)添加:
#ifdef WIN32
#pragma execution_character_set("utf-8")
#endif
#ifndef WIDGET_OP_H
#define WIDGET_OP_H
#include <QWidget>
#include <QImage>
#include <QLabel>
#include "mylabel.h"
#include <opencv2/opencv.hpp>
namespace Ui {
class Widget_op;
}
class Widget_op : public QWidget
{
Q_OBJECT
public:
explicit Widget_op(QWidget *parent = 0);
~Widget_op();
private slots:
void on_pushButton_1_clicked();
void on_pushButton_2_clicked();
void on_pushButton_3_clicked();
void on_pushButton_4_clicked();
void on_pushButton_5_clicked();
void on_myLabel_1_clicked();
void on_myLabel_2_clicked();
private:
Ui::Widget_op *ui;
private:
QImage MatToQImage(const cv::Mat& mat); // MAT类型 转 QImage类型
void display_MatInQT(QLabel* label,cv::Mat mat); // MAT对象 QT显示
private:
cv::Mat mat_origin;
cv::Mat mat_logo;
cv::Mat mat_add;
cv::Mat mat_Gaussian;
};
#endif // WIDGET_OP_H
4)Widget_op.cpp (主窗口源文件)添加:
4.1)Mat转QImage 函数:
QImage Widget_op::MatToQImage(const cv::Mat& mat)
{
// 8-bits unsigned, NO. OF CHANNELS = 1
if(mat.type() == CV_8UC1)