Opencv contourArea輪廓面積檢測

contourArea

Calculates a contour area.

double contourArea(InputArray contour, bool oriented=false )

Parameters:
contour – Input vector of 2D points (contour vertices), stored in std::vector or Mat.
oriented – Oriented area flag. If it is true, the function returns a signed area value, depending on the contour orientation (clockwise or counter-clockwise). Using this feature you can determine orientation of a contour by taking the sign of an area. By default, the parameter is false, which means that the absolute value is returned.會有方向的話,就會返回有正負,否則就是絕對值。
例子

vector<Point> contour;
contour.push_back(Point2f(0, 0));
contour.push_back(Point2f(10, 0));
contour.push_back(Point2f(10, 10));
contour.push_back(Point2f(5, 4));

double area0 = contourArea(contour);
vector<Point> approx;
approxPolyDP(contour, approx, 5, true);
double area1 = contourArea(approx);

cout << "area0 =" << area0 << endl <<
        "area1 =" << area1 << endl <<
        "approx poly vertices" << approx.size() << endl;
結果

可以看出擬合的多邊形有誤差,面積有5的差距,就是

void approxPolyDP(InputArray curve, OutputArray approxCurve, double epsilon, bool closed)

中的epslion就是擬合的誤差。可以看出,正好誤差是5.

所以可以檢測輪廓后,然后用contourArea算出面積去掉那些面積很小的輪廓,就可以實現一些差不多的目標檢測的目的。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 四月,涼爽的微風拂過因為疲憊而濕潤的睫毛;涼風習習,就像是剛打開冰箱時迎面的涼意,帶著春天的花香和剛被修過的...
    月移山影到窗前閱讀 198評論 2 1