我将 cvFindContours 的输出传递给 cvBoundingRect 。但它给出了这个错误:
OpenCV错误:cvBoundingRect中的错误参数(不支持的序列类型),文件/home/z/src/OpenCV-2.4.2/modules/imgproc/src/shapedescr.cpp,第950行 在抛出'cv :: Exception'的实例后终止调用 what():/home/z/src/OpenCV-2.4.2/modules/imgproc/src/shapedescr.cpp:950:错误:( - 5)函数cvBoundingRect中不支持的序列类型
以下是代码:
CvRect rect;
cvFindContours( imgB, g_storage, &contours,sizeof(CvContour),CV_RETR_LIST, CV_CHAIN_CODE,cvPoint(0,0));
if(contours)
{cvDrawContours(img_B,contours, CV_RGB(250,0,0), CV_RGB(0,0,250),1,2,8);
rect=cvBoundingRect(contours);
}
请告诉我这个错误可能是什么原因。解决办法是什么?感谢
答案 0 :(得分:0)
cvBoundingRect()占用1个轮廓,你将它们全部送入其中
答案 1 :(得分:0)
从berak离开的地方继续, CvSeq ** first_contour是你提供的功能。
指针first_contour由函数填充。它将包含一个 指向第一个最外侧轮廓的指针,如果没有轮廓则为NULL 检测到(如果图像是完全黑色的)。其他轮廓可能是 使用h_next和v_next链接从first_contour到达。
所以你需要这样的东西:
CvSeq* contour = *contours;
while (contour != NULL)
{
//insert boundingbox and other code
contour = contour->h_next;
}
答案 2 :(得分:0)
好的,我找到了答案。这是正确的方法: