c++ - 图像未正确检索

标签 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 读取保存的图像时,它有两个 channel 。

我有两个问题:

  1. 为什么会这样?
  2. 如何获得灰度级的一维图像?

最佳答案

对于您的第一个问题:您应该检查您使用的是哪种相机/硬件?另外,通过运行确认框架是否有 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/

相关文章:

c++ - 在 C++ 中创建链表

c++ - QGraphicsEllipseItem 不可移动

c++ - 我如何创建一个线程安全的 QOffscreenSurface 供 OpenGl 使用

c# - 如何使用 emgucv/opencv/Aforge.Net/Accord.Net 在 50-100 毫秒内实时检测仪表中的指示灯和状态(ON-OFF、颜色、闪烁)

c++ - MFC - 如何绘制彩色位图到对话框DC

c++ - 调用可变大小的数组作为参数

c++ - 优先队列的一种变体

python - Raspberrypi:从图像中去除鱼眼效果

opencv - << 运算符(operator)在打印的某个随机步骤中使程序崩溃,退出代码为 0

opencv - 如何找到形状边界的直线近似值?