美文网首页
Opencv contourArea轮廓面积检测

Opencv contourArea轮廓面积检测

作者: 东林钟声 | 来源:发表于2017-03-18 00:15 被阅读0次

    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算出面积去掉那些面积很小的轮廓,就可以实现一些差不多的目标检测的目的。

    相关文章

      网友评论

          本文标题:Opencv contourArea轮廓面积检测

          本文链接:https://www.haomeiwen.com/subject/mjnynttx.html