我想捕获图像并将其用作灰度图像。
我有以下代码:
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 读取保存的图像时,它有两个 channel 。
我有两个问题:
- 为什么会这样?
- 如何获得灰度级的一维图像?
最佳答案
对于您的第一个问题:您应该检查您使用的是哪种相机/硬件?另外,通过运行确认框架是否有 2 个 channel :
cout << img->nChannels << endl;
第二部分:
要将图像读取为灰色 channel ,请更改:
Mat r = imread("test.jpg", 1);
到
Mat r = imread("test.jpg", 0);
看这个:docs
关于c++ - 图像未正确检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39918639/