使用opencv在qt的label上显示图片

使用QT在label上显示图片
之前记录过,因为QT的RGB顺序和opencv中的不同,如果需要在qt上的label显示图片,需要将读取的图片转换为QImage类型。
首先我们简单的创建两个button和label

使用opencv在qt的label上显示图片_第1张图片
此时在show_hsv右键转到槽,写入以下代码
最关键的是第三行,让src1转为QImage类型,使用改行函数实现该功能

	Mat src1=imread("1.png");
    cvtColor(src1, src1, CV_BGR2HSV);//BGR convert to hsv
    QImage Qtemp = QImage((const unsigned char*)(src1.data), src1.cols, src1.rows, src1.step, QImage::Format_RGB888);
    ui->label->setPixmap(QPixmap::fromImage(Qtemp));
    ui->label->resize(Qtemp.size());
    ui->label->show();

同样的,在show_gray转到槽,写入以下代码

	Mat src1=imread("1.png");
    Mat src2;
    cvtColor(src1, src2, CV_BGR2RGB);
    QImage Qtemp1= QImage((const unsigned char*)(src2.data), src2.cols, src2.rows, src2.step, QImage::Format_RGB888);
    ui->label_2->setPixmap(QPixmap::fromImage(Qtemp1));
    ui->label_2->resize(Qtemp1.size());
    ui->label_2->show();

使用opencv在qt的label上显示图片_第2张图片

使用opencv在qt的label上显示图片_第3张图片
效果如图所示~

另外,如果发现自己的图片太大把整个界面都覆盖住了,如果需要把图片填充完整个界面,可以使用如下代码:

ui->label_2->setScaledContents(true);

完整的代码如下

	Mat src1=imread("C:/Users/wusr134892/Desktop/led1.jpg");
    Mat src2;
    cvtColor(src1, src2, CV_BGR2RGB);
    QImage Qtemp1= QImage((const unsigned char*)(src2.data), src2.cols, src2.rows, src2.step, QImage::Format_RGB888);
    ui->label_2->setPixmap(QPixmap::fromImage(Qtemp1));
    ui->label_2->setScaledContents(true);
    ui->label_2->show();

你可能感兴趣的:(opencv,qt)