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));