【问题标题】:Convert image from webcam to gray scale opencv将图像从网络摄像头转换为灰度opencv
【发布时间】:2013-12-15 14:08:36
【问题描述】:

我是 openCV 的新手。我需要将 Mat 从网络摄像头转换为灰度,但没有任何反应,我仍然看到 RGB 彩色图像。

capWebCam.read(matOriganal);

cv::Mat im_gray;
cv::cvtColor(matOriganal,im_gray,CV_BGR2GRAY);
QImage qim_gray((uchar *)im_gray.data, im_gray.cols, im_gray.rows,
                    im_gray.step, QImage::Format_RGB888);
ui->lOriginal->setPixmap(QPixmap::fromImage(qim_gray));

请你帮我看看我做错了什么。

【问题讨论】:

    标签: c++ opencv


    【解决方案1】:

    这看起来很奇怪:

    QImage::Format_RGB888
    

    您基本上是在告诉 Qt,您的图像存储为 RGB,每个通道有 8 位,但您的实际图像是灰度(一个通道,8 位)。

    一个简单的解决方案是将您的灰度图像转换回 RGB。

    cv::cvtColor(matOriganal,im_gray,CV_BGR2GRAY);
    cv::Mat im_gray_rgb;
    cv::cvtColor(im_gray,im_gray_rgb,CV_GRAY2RGB);
    QImage qim_gray((uchar *)im_gray_rgb.data, im_gray_rgb.cols, im_gray_rgb.rows,
                        im_gray_rgb.step, QImage::Format_RGB888);
    

    即使数据存储为 RGB,它仍然是灰色的。这当然意味着您需要进行额外的、不必要的复制。

    另一个选项是不使用QImage::Format_RGB888,而是使用QImage::Format_Indexed8,但这可能意味着您需要指定颜色图。我没试过,所以不知道。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-19
      • 2017-08-25
      • 1970-01-01
      • 2014-06-04
      • 2020-07-06
      • 2022-06-30
      • 2015-10-07
      相关资源
      最近更新 更多