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

时间:2013-10-17 09:38:31

标签: opencv image-processing

我使用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]));
}

但最终,它不起作用,给我错误 - OpenCV错误:通道数量不好(源图像必须有1,3或4个通道)

注意:原始图像是灰色图像而不是RGB图像。

1 个答案:

答案 0 :(得分:0)

抱歉前几天懒惰/不清楚,但即使你把你的轮廓点数列表放到垫子里,也不会成为一张图片。应该是:

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同一个windowname,你只能看到 last 图像,因为一个调用会覆盖另一个