【发布时间】:2015-12-31 10:42:25
【问题描述】:
我正在尝试确定旋转矩形的最小边界矩形。我尝试了几个示例,例如来自 RotatedRect 参考的this 或来自this 关于椭圆和边界框的教程。没有什么令人满意的结果。在下图中,黄色矩形是所需的结果。
我的测试的示例数据:
Image:
Width: 1500
Height: 843
RotatedRect:
Center:
X: 783.490417
Y: 433.673492
Size:
Width: 810.946899
Height: 841.796997
Angle: 95.4092407
示例代码:
cv::RotatedRect r(cv::Point2f(783.490417, 433.673492),
cv::Size2f(810.946899, 841.796997),
95.4092407);
cv::Mat img = Mat::zeros(843, 1500, CV_8UC3);
cv::Rect rect = r.boundingRect();
cv::ellipse(img, r, cv::Scalar(0, 0, 255)); // RED
Point2f vertices[4];
r.points(vertices);
for (int i = 0; i < 4; i++)
line(img, vertices[i], vertices[(i + 1) % 4], Scalar(0, 255, 0)); // GREEN
rectangle(img, rect, Scalar(255, 0, 0)); // BLUE
cv::imshow("Result", img);
- RED - 计算最小边界矩形的 RotatedRect
- 蓝色 - r.boundingRect()
- 绿色 - r.points()
- 黄色 - 想要的结果
【问题讨论】:
标签: c++ opencv bounding-box