我的标签定义如下:
QLabel* label_min;
label_min = new QLabel(this);
label_min->setGeometry(QRect(10, 20, 640, 480));
我还有一个cv :: Mat图像:
cv::Mat Mat_dst;
我没有找到将图片包含在上面标签中的方法。
有办法吗?
答案 0 :(得分:1)
我认为你应该首先将cv :: Mat转换为QImage(这看起来并不简单),然后将该QImage转换为QPixmap并使用setPixmap函数。
正如我所说,将cv :: Mat图像转换为QImage并非易事。它取决于你的图像类型(RGB或单色或......)以及cv :: Mat对象的生命周期,如果将cv :: Mat图像的深层副本复制到QImage对你来说是很昂贵的。
cv::Mat cvImg; // your opencv image
QImage img = OpenCV2Qt(cvImg); // Implementation of this function depends on cvImage
label->setPixmap(QPixmap::fromImage(img));
为了将cv :: Mat转换为QImage对象,由于没有提供有关图像类型的更多信息,我相信最好在stackoverflow上看到以下帖子:
how to convert an opencv cv::Mat to qimage
最后要记住的是,如果您使用的是RGB图像,OpenCV会以BGR顺序存储数据,但Qt按RGB顺序存储;所以你要么必须调用cvtColor(mat,rgb,CV_BGR2RGB)或qimg.rgbSwapped()。