根据我的实验,RotatedRect的角度变量返回的角度从-90到0度,这不足以确定对象是向左还是向右倾斜.
例如,如果角度为-45度,我们不能说是否需要旋转+45或-45度来对其进行校正.
我正在使用的代码的摘录:
RotatedRect rotated_rect = minAreaRect(contour);
float blob_angle_deg = rotated_rect.angle;
Mat mapMatrix = getRotationMatrix2D(center, blob_angle_deg, 1.0);
Run Code Online (Sandbox Code Playgroud)
将物体向一个方向倾斜,我得到0到-90度的角度,同时将物体倾斜到另一个方向,我得到-90到0度的角度.
如何找到旋转图像以进行偏斜校正的角度?
Joã*_*lva 15
从Sebastian Schmitz和Michael Burdinov那里得知答案之后,我就是这样解决的:
RotatedRect rotated_rect = minAreaRect(contour);
float blob_angle_deg = rotated_rect.angle;
if (rotated_rect.size.width < rotated_rect.size.height) {
blob_angle_deg = 90 + blob_angle_deg;
}
Mat mapMatrix = getRotationMatrix2D(center, blob_angle_deg, 1.0);
Run Code Online (Sandbox Code Playgroud)
因此,事实上,RotatedRect的角度不能提供足够的信息来知道对象的角度,你还必须使用RotatedRect的size.width
和size.height
.