1

我在 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

对于任何反馈,我们都表示感谢。

4

0 回答 0