记录当时非常不理解的地方。
在一副图片中,画出旋转矩形RotatedRect。然后用getRotationMatrix2D,warpAffine将图片旋转,使得矩形放平。注意旋转矩形是带文字的,所以要不影响阅读。
- RotatedRect
角度是正值,代表顺时针旋转。
测试了几十个旋转矩形,发现负值和大于90的情况很少,大多数是小于90度的。我觉得这可能是角度表示问题。选取了最小角度来表示。
下图角度就是30度。
水平位置顺时针旋转了30度
下图角度就是90-30=60度(或者说是-30度,但输出RotatedRect.angle的话就是60度)
是从竖直位置顺时针旋转了60度
- getRotationMatrix2D
角度是正值,代表逆时针旋转
对旋转矩形使用此函数,角度使用RotatedRect.angle的话,可以将矩形放平。
第一幅图,没问题;第二幅图,会将图片竖过来,影响阅读。
如果是长方形,一个解办法是计算width/height,
对于第一幅图,width/height>1,直接旋转矩形的角度即可。正值,逆时针旋转将图片归位
对于第二幅图,width/height<1,这是参数填写 矩形角度-90度 即可,负值的话,就顺时针旋转了。