在Qt中显示浮点图像

时间:2014-03-24 19:01:55

标签: c++ qt opencv

我得到一个0到1范围内的浮点图像。我尝试使用标签在Qt中显示这个浮动图像,但它没有工作。 我检查了QImage格式,发现Qt不支持浮动图像。现在我正以这种方式尝试..

            QVector<QRgb> colorTable;
            for (int i = 0; i < 256; i++) 
            colorTable.push_back(qRgb(i, i, i));
             Mat img2;
            DepthImg.convertTo(img2, CV_8UC1);
            assert(img2.isContinuous());
            QImage image = QImage((unsigned char*)(img2.data), DepthImg.cols, DepthImg.rows, QImage::Format_Indexed8);
            image.setColorTable(colorTable);
            ui.ThreeD->setPixmap(QPixmap::fromImage(image, Qt::AutoColor));
            ui.ThreeD->setScaledContents(true);
            qApp->processEvents();
            this->ui.ThreeD->show();

这里&#34; DepthImage&#34;是浮点图像。

 Mat img2;
 DepthImg.convertTo(img2, CV_8UC1);
 assert(img2.isContinuous());
 QImage image = QImage((unsigned char*)img2.data, img2.cols, img2.rows, img2.cols*3, QImage::Format_RGB888);
 ui.ThreeD->setPixmap(QPixmap::fromImage(image, Qt::AutoColor));
 ui.ThreeD->setScaledContents(true);
 qApp->processEvents();
 this->ui.ThreeD->show();

以两种方式执行后,我只得到一张黑色图像。 任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您需要按比例缩放图像255。 你可以通过改变

来做到这一点
DepthImg.convertTo(img2, CV_8UC1);

DepthImg.convertTo(img2, CV_8UC1, 255.0);