Qt OpenCV 在界面显示图片 通过Lable方式 和GraphicsView 方式

1. 通过lable方式打开图片。

代码如下:

void MainWindow::on_pushButton_clicked()
{
  Mat srcImage,gray_image,srcImage1;
  QString Fileadd = QFileDialog::getOpenFileName(this,"get file");
  if(Fileadd.isEmpty())
  {
      QMessageBox::information(this,"警告","没有选择文件");
      return ;
  }
  srcImage = imread(Fileadd.toLatin1().data());  //读取图片
  cvtColor(srcImage,srcImage1,COLOR_BGR2RGB);         // 图像格式转换
  QImage disImage = QImage((const unsigned char*)(srcImage1.data),srcImage1.cols,srcImage1.rows,QImage::Format_RGB888);
  ui->label->setPixmap(QPixmap::fromImage(disImage.scaled(ui->label->size(), Qt::KeepAspectRatio)));
}

效果图如下:

 

2.Graphics View 方式打开图片

代码如下:

void MainWindow::on_pushButton_2_clicked()
{
    QString fileName = QFileDialog::getOpenFileName(this,tr("Open Image"),".",tr("Image File(*.png *.jpg *.jpeg *.bmp)"));
    if (fileName.isEmpty())
    {
        return;
    }
    Mat srcImage = imread(fileName.toLatin1().data());//读取图片数据
    cvtColor(srcImage, srcImage, COLOR_BGR2RGB);//图像格式转换
    QImage disImage = QImage((const unsigned char*)(srcImage.data),srcImage.cols,srcImage.rows,QImage::Format_RGB888);

    QGraphicsScene *scene = new QGraphicsScene;//图像显示
    scene->addPixmap(QPixmap::fromImage(disImage));
    ui->graphicsView->setScene(scene);
    ui->graphicsView->show();
}

效果图如下:

本文福利, 免费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块等等)↓↓↓↓↓↓见下面↓↓文章底部点击免费领取↓↓

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用QtOpenCV创建图像界面时,需要使用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 ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值