我在 Ubuntu 上使用 QT 运行 OpenCV,并且在使用 QLabel 显示图像时遇到了问题。如果我使用代码:(其中“图像”是由 dcraw 创建的 Mat):
Mat img_display;
cv::cvtColor(image,img_display,CV_BGR2RGB);
imwrite("test.jpg",img_display);
QImage img=QImage("test.jpg"); // QImage assignment
QPixmap pixmap(QPixmap::fromImage(img));
widget.image_label->setPixmap(pixmap);
图像以彩色输出,完全符合我的预期。
但是,当我将 QImage 分配替换为使用“img_display”而不是 .jpg 文件时,我的图像显示从原点的右侧开始,并且有一个三角形覆盖了显示图像的右下角。这个三角形看起来像是图像 LHS 中缺失位的一半。我尝试使用的分配代码是:
QImage img=QImage(
(uchar*)(img_display.data),
img_display.cols,
img_display.rows,
QImage::Format_RGB888);
图像来自原始 18.2mb cr2 文件,由 dcraw 创建。test.jpg 是 3.1mb
对于任何反馈,我们都表示感谢。