openCV cvContourArea

我试图使用cvFindContours,这绝对是似乎要走的路。 我遇到了一个最大的问题。 有一个函数调用cvContourArea,它假设以序列的forms获取轮廓的区域。 我遇到了麻烦。

int conNum = cvFindContours(outerbox, storage, &contours, sizeof(CvContour),CV_RETR_LIST,CV_CHAIN_APPROX_NONE,cvPoint(0, 0)); CvSeq* current_contour = contours; double largestArea = 0; CvSeq* largest_contour = NULL; while (current_contour != NULL){ double area = fabs(cvContourArea(&storage,CV_WHOLE_SEQ, false)); if(area > largestArea){ largestArea = area; largest_contour = current_contour; } current_contour = current_contour->h_next; } 

我尝试用轮廓replace存储器(在cvContourArea中),但不pipe怎样,同样的错误一直出现:

 OpenCV Error: Bad argument (Input array is not a valid matrix) in cvPointSeqFromMat, file /Volumes/ramdisk/opencv/OpenCV-2.2.0/modules/imgproc/src/utils.cpp, line 53 

我GOOGLE了,几乎找不到cvContourArea的例子,需要3个参数..好像它最近改变了..我想循环通过find的轮廓,find最大的一个,之后,使用cvDrawContours方法绘制它..谢谢!

尝试在以下语句中将&storage更改为current_contour

更改

 double area = fabs(cvContourArea(&storage,CV_WHOLE_SEQ, false)); 

 double area = fabs(cvContourArea(current_contour,CV_WHOLE_SEQ, 0));