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 个通道)的主要内容,如果未能解决你的问题,请参考以下文章