OpenCV 错误:通道数错误(源图像必须有 1、3 或 4 个通道)

Posted

技术标签:

【中文标题】OpenCV 错误:通道数错误(源图像必须有 1、3 或 4 个通道)【英文标题】:OpenCV Error: Bad number of channels (Source image must have 1, 3 or 4 channels) 【发布时间】:2013-10-17 09:38:30 【问题描述】:

我正在使用 opencv 来查找轮廓,并在图像帧上显示每个轮廓,我已经看到了使用将轮廓转换为矩形的示例

`boundingRect( Mat(contours_poly[i]) );`

所以我认为可以工作 cv::imshow("parking2", Mat(contours[i]));

cv::findContours(img_resized,contours,CV_RETR_LIST,CV_CHAIN_APPROX_SIMPLE);
cout<<"contour size   "<<contours.size()<<endl;
for(int i = 0;i <contours.size();i++)
  cv::imshow("parking2", Mat(contours[i]));

但最终,它不起作用,给我错误 -

注意:原图是灰度图,不是RGB图。

【问题讨论】:

【参考方案1】:

抱歉,前几天的懒惰/不清楚,但即使您将轮廓点列表放入垫子中,也不会使其成为图像。应该是:

Rect br = boundingRect( contours_poly[i] ); // the rect containing all points of the contour

Mat cropped(img_resized, br);               // the cropped part of the original image 

imshow( "parking2", cropped );              // show cropped part only

另外,如果您在循环中使用相同的窗口名称重复调用 imshow,您将只能看到 last 图像,因为一个调用会覆盖另一个调用

【讨论】:

以上是关于OpenCV 错误:通道数错误(源图像必须有 1、3 或 4 个通道)的主要内容,如果未能解决你的问题,请参考以下文章

使用 OpenCV 中的轮廓点从源图像创建图像?

OpenCV 错误:使用 fitLine 时断言失败

bilateralFilter(双边滤波操作)

OpenCV 双边滤波

如果找不到源图像,如何显示替代图像? (在 IE 中工作但在 Mozilla 中不工作的错误)[重复]

OpenCV学习(53)