qt opencv 图像界面
时间: 2023-11-14 08:29:11 浏览: 53
在使用Qt和OpenCV创建图像界面时,需要使用Qt的Label控件来显示OpenCV的Mat类图像。首先,需要将OpenCV的Mat类图像转换为Qt的QImage类。具体的代码如下所示:
```
Mat temp;
cvtColor(srcImg, temp, CV_BGR2RGB);
QImage Qtemp = QImage((const unsigned char*)(temp.data), temp.cols, temp.rows, temp.step, QImage::Format_RGB888);
ui.label->setPixmap(QPixmap::fromImage(Qtemp));
ui.label->resize(Qtemp.size());
ui.label->show();
```
其中,srcImg是OpenCV中的图像,通过cvtColor函数将其从BGR格式转换为RGB格式,然后将其转换为QImage类,最后使用label控件的setPixmap函数设置图像,resize函数调整控件尺寸,show函数显示控件。
此外,还需要在Qt的头文件中引入相应的头文件,并在cpp文件中编写槽函数。具体代码如下所示:
```
// Qt.h文件
#pragma once
#pragma execution_character_set("utf-8")//显示中文字符
#include <QtWidgets/QMainWindow>
#include <opencv2/opencv.hpp>
#include "ui_MatdisplayinQt.h"
using namespace cv;
class MatdisplayinQt : public QMainWindow {
Q_OBJECT
public:
MatdisplayinQt(QWidget *parent = Q_NULLPTR);
int isGray = 0;
Mat srcImg, grayImg;
private:
Ui::MatdisplayinQtClass ui;
private slots:
void on_checkBox_clicked();
void on_pushButton_clicked();
};
// Qt.cpp文件
#include "MatdisplayinQt.h"
MatdisplayinQt::MatdisplayinQt(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
}
void MatdisplayinQt::on_pushButton_clicked()
{
srcImg = imread("00.jpg");
cvtColor(srcImg, grayImg, CV_BGR2GRAY);
Mat temp;
QImage Qtemp;
if (!isGray) {
cvtColor(srcImg, temp, CV_BGR2RGB);
Qtemp = QImage((const unsigned char*)(temp.data), temp.cols, temp.rows, temp.step, QImage::Format_RGB888);
}
else {
cvtColor(grayImg, temp, CV_GRAY2RGB);
Qtemp = QImage((const unsigned char*)(temp.data), temp.cols, temp.rows, temp.step, QImage::Format_RGB888);
}
ui.label->setPixmap(QPixmap::fromImage(Qtemp));
ui.label->resize(Qtemp.size());
ui.label->show();
}
void MatdisplayinQt::on_checkBox_clicked()
{
if (ui.checkBox->isChecked()) {
isGray = 1;
}
else {
isGray = 0;
}
}
```
在这段代码中,on_pushButton_clicked槽函数用于打开图像,将其转换为QImage,并显示在label控件中,on_checkBox_clicked槽函数用于切换是否显示灰度图像。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [【OpenCV+Qt】在Qt界面中显示OpenCV处理的图像](https://blog.csdn.net/qinchang1/article/details/86769773)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)