我正在使用相機來獲取作爲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,導致信息丟失。現在,我有一個圖像,但它有點搞砸了,在場景中有很多「雪」(我不知道如何放置)。 –