您的位置:首页 > 运维架构

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

2017-05-13 15:57 507 查看
//!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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: