Opencv获取最小外接矩形——minAreaRect

来源:互联网 发布:高速摄像机知乎 编辑:程序博客网 时间:2024/05/16 04:49

//!computes the minimal rotated rectangle for a set of points
RotatedRect minAreaRect(InputArray points);//计算一些列点的最小外接矩形,带角度信息

C++: RotatedRect minAreaRect(InputArray points)
Python: cv2.minAreaRect(points) → retval
C: CvBox2D cvMinAreaRect2(const CvArr* points, CvMemStorage* storage=NULL )
Python: cv.MinAreaRect2(points, storage=None) → Box2D

Parameters:points-

Input vector of 2D points ,stored in:
1: std::vector<>or Mat (c++ interface)
2:CvSeq * or CvMat *(C interface)
3:Nx2 numpy array(python interface)

测试案例:

    vector<Vec4i> hierarchy;    vector<vector<Point>> contours;    findContours(src, contours, hierarchy, RETR_LIST, CHAIN_APPROX_SIMPLE, Point(0, 0));    vector<vector<Point>>::iterator iter = contours.begin();    RotatedRect resultRect;    while (iter != contours.end())           {        resultRect = minAreaRect(*iter);//获取轮廓的最小外接矩形                   Point2f pt[4];            resultRect.points(pt);//获取最小外接矩形的四个顶点坐标            //绘制最小外接矩形            line(src, pt[0], pt[1], Scalar(255, 0, 0), 2, 8);            line(src, pt[1], pt[2], Scalar(255, 0, 0), 2, 8);            line(src, pt[2], pt[3], Scalar(255, 0, 0), 2, 8);            line(src, pt[3], pt[0], Scalar(255, 0, 0), 2, 8);            cout << "*******************************" << endl;            cout << "X坐标" << resultRect.center.x << "Y坐标" << resultRect.center.y << "偏移角度"<<resultRect.angle<<endl;            cout << "*******************************" << endl;        }
0 0