前言
OpenCV中,也可以通过给定点集(轮廓),求其最小面积外接矩形,则会返回一个旋转矩形。
一、minAreaRect返回的旋转矩形
通过此接口返回的旋转矩形,角度范围[-90,0]。
二、使用示例
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat test_image(200, 200, CV_8UC3, Scalar(0));
Point2f p1(53, 130), p2(103, 44), p3(146, 69);
vector<Point2f> points = {p1,p2,p3};
Point2f vertices[4];
RotatedRect rect = minAreaRect(points);
rect.points(vertices);
for (int i = 0; i < 4; i++)
line(test_image, vertices[i], vertices[(i + 1) % 4], Scalar(0, 255, 0), 2);
imwrite("./Datas/rotatedRect1.png", test_image);
}
2.测试结果
总结
通过返回点集的最小外接矩形的方式获得旋转矩形,对点集的顺序,坐标值精度均没有太高要求,可以在数据存在噪声的情况下使用。