无法正确检索图像

时间:2016-10-07 13:37:19

标签: c++ opencv

我想捕捉图像并将其用作灰度图像。

我有以下代码:

CvCapture *p = cvCreateCameraCapture(0);
cvSetCaptureProperty(p, CV_CAP_PROP_FRAME_WIDTH, 1024);
cvSetCaptureProperty(p, CV_CAP_PROP_FRAME_HEIGHT, 1024);
IplImage* frame;
for (int i = 0; i < 25; i++)
{
    frame = cvQueryFrame(p);
}
cvSaveImage("test.jpg", frame);

Mat r = imread("test.jpg", 1);
Mat inputImage;
cvtColor(r, inputImage, COLOR_RGB2GRAY);

在我的代码frame中是RGB图像(三维)。当我用r读取保存的图像时它有两个通道。

我有两个问题:

  1. 为什么会这样?
  2. 我怎样才能得到灰度级的一维图像?

1 个答案:

答案 0 :(得分:1)

对于您的第一个问题:您应该检查您使用的是哪种相机/硬件?此外,通过运行确认帧是否有2个通道:

 cout << img->nChannels << endl;

第二部分:

要将图像读取为灰色通道,请更改:

Mat r = imread("test.jpg", 1);

Mat r = imread("test.jpg", 0);

请参阅:docs