没有正确检索图像

Image is not retrieved correctly

本文关键字:检索 图像      更新时间:2023-10-16

我想捕获一张图像并将其用作灰度图像。

我有以下代码:

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. 我怎么能有一个一维的图像是灰度级别?

对于您的第一个问题:您应该检查您正在使用的相机/硬件?另外,通过运行

确认帧是否有2个通道
 cout << img->nChannels << endl;

第二部分:

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

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

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

参见:docs