我正在使用相机来获取作为cv :: Mat对象的imgTomo1图像。这是一张CV_32F图片。 我试图用QPixmap在QLabel上展示它。 这里是我的代码:在QPixmap中显示cv :: Mat(类型CV_32F)
cv::Mat imgTomo; imgTomo1.convertTo(imgTomo,CV_8UC1); static QVector<QRgb> sColorTable; // only create our color table the first time if (sColorTable.isEmpty()) sColorTable.resize(256); for (int i = 0; i < 256; ++i) { sColorTable[i] = qRgb(i, i, >i); } } QImage image(imgTomo.data, imgTomo.cols, imgTomo.rows, static_cast<int>(imgTomo.step), QImage::Format_Indexed8); image.setColorTable(sColorTable); _afficheImg->setPixmap(QPixmap::fromImage(image));
不幸的是,显示的图像保持黑色。 因为我是OpenCV的新手,所以我在格式上有些迷失。 我认为转换应该起作用,所以我不知道我在做什么。
编辑:我已删除了fllowing行:
imgTomo1.convertTo(imgTomo,CV_8UC1);
它导致信息丢失。 现在我不再有黑屏了,但有些“雪”(我猜猜看像是非常quicly地从1到0的奇怪像素),我真的不能看到我的相机是什么样子显示的。
谢谢您的解答, 格雷
谢谢你为你的答案。我设法找出了其中一个问题。实际上使用“imgTomo1.convertTo(imgTomo,CV_8UC1);”我正在将我的float32转换为8位上的intigned int,导致信息丢失。现在,我有一个图像,但它有点搞砸了,在场景中有很多“雪”(我不知道如何放置)。 –