如何在openCV中将颜色转换为灰度图像?

时间:2011-03-16 09:21:39

标签: c++ opencv qt4.6

您好 我已阅读openCV参考from this网站并使用以下代码:

VideoCapture mCap;
Mat mcolImage, mbwImage;

           mCap >> mcolImage; // New frames from the camera

          cvtColor( mcolImage, mcolImage, CV_BGR2RGB);
          cvtColor( mcolImage, mbwImage, CV_RGB2GRAY);

           QImage colImagetmp( (uchar*)mcolImage.data, mcolImage.cols, mcolImage.rows, mcolImage.step,
                              QImage::Format_RGB888 ); //Colour

           QImage bwImagetmp ( (uchar*)mbwImage.data, mbwImage.cols, mbwImage.rows, mbwImage.step,
                              QImage::Format_Indexed8); //Greyscale. I hope

           ui.bwDisplay->setPixmap(QPixmap::fromImage(bwImagetmp));
           ui.colDisplay->setPixmap( QPixmap::fromImage(colImagetmp ));

我正在尝试将其中一个输出转换为灰度。不幸的是,它们仍然都是彩色的,我无法看到我错过了某个地方的一步。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

您需要为bwImagetmp明确设置灰色表:

QVector<QRgb> colorTable;
for (int i = 0; i < 256; i++) colorTable.push_back(qRgb(i, i, i));
bwImagetmp.setColorTable(colorTable); 
相关问题