根据我的实验,RotatedRect的angle变量返回的角度从-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);

将对象向一个方向倾斜时,角度为0到-90度,而将对象向另一个方向倾斜时,角度为-90到0度。

如何找到旋转图像以使其倾斜的角度?

最佳答案

Sebastian SchmitzMichael 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);

因此,实际上,RotatedRect的角度不能提供足够的信息来了解对象的角度,因此还必须使用RotatedRect的size.widthsize.height

关于OpenCV的RotatedRect角度无法提供足够的信息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24073127/

10-13 04:01