c++ opencv最小外接矩形的旋转角度怎么求
时间: 2023-06-16 11:07:24 浏览: 218
opencv实现图像任意角度旋转的代码实现(内含算法解析)
4星 · 用户满意度95%
在OpenCV中,可以使用函数 `minAreaRect()` 来计算最小外接矩形。返回的是一个 `RotatedRect` 对象,其中包含了该矩形的中心点、宽度、高度和旋转角度等信息。
可以通过调用 `RotatedRect.angle` 来获取最小外接矩形的旋转角度。例如:
```c++
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat image = imread("test.jpg");
Mat gray;
cvtColor(image, gray, COLOR_BGR2GRAY);
threshold(gray, gray, 127, 255, THRESH_BINARY);
std::vector<std::vector<Point>> contours;
findContours(gray, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
for (auto& contour : contours)
{
RotatedRect rect = minAreaRect(contour);
float angle = rect.angle;
std::cout << "Rotation angle: " << angle << std::endl;
}
return 0;
}
```
其中, `findContours()` 函数用于寻找轮廓, `threshold()` 函数用于二值化图像, `RETR_EXTERNAL` 表示只寻找最外层轮廓, `CHAIN_APPROX_SIMPLE` 表示对轮廓进行简化。
注意,在计算旋转角度时,返回的是逆时针方向旋转的角度,如果需要转化为顺时针方向,则可以使用如下代码:
```c++
if (rect.angle < -45)
{
angle = 90 + rect.angle;
}
else
{
angle = rect.angle;
}
```
阅读全文