我使用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图像。
答案 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 图像,因为一个调用会覆盖另一个