OpenCV和Qt:Mat to QLabel QPixmap

时间:2016-11-01 00:42:50

标签: qt opencv

我在使用以下代码时遇到了一些问题。我正在尝试将Mat设置为QLabel像素图。当我调用QLabel :: setPixmap()时,没有任何反应!对话框中的标签保持完全相同,显示占位符文本。它已被适当地提升为MyLabel。

//include stuff above
MyLabel::MyLabel(QWidget *parent): QLabel(parent)
{
    boats = cv::imread("C:/boats.jpg");
    setPixmap(boats);
}

void MyLabel::setPixmap(cv::Mat image){
    cv::Mat converted;
    cv::cvtColor(image, converted, CV_BGR2RGB);
    QImage result = QImage((const unsigned char*)(converted.data),
                           converted.cols, converted.rows, QImage::Format_RGB888);
    QLabel::setPixmap(QPixmap::fromImage(result));

}

我也尝试过以下方式设置像素图:

QLabel::setPixmap(QPixmap("C:/boats.jpg"));

但这会产生同样的效果。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您应该将图像设置为界面。例如,您可以这样设置:

 ui->label_15->setPixmap(QPixmap::fromImage(result));