以下是RotatedRect里面的角度angle的说明图:

opencv如何自动旋转图像正向 opencv旋转矩形角度范围_opencv如何自动旋转图像正向

这里要注意的4点是:

1、角度angle的取值是由RotatedRect的width和X轴的夹角组成的。

2、RotatedRect的width和height的选取跟矩形的尺寸无关,并非长的就是height,短的就是width。

3、OpenCV默认把 水平轴(x轴)逆时针旋转,碰到的第一个边 这个边的边长作为width。

4、angle的取值范围必然是负的,实际angle的取值范围为(-90,0]。

这是本人修改过的图,下面进入论证:

这里用了一幅图,里面有两个旋转的矩形,其中由于旋转的角度不一样,所以opencv找出来的RotatedRect里面的width有可能会比height大

opencv如何自动旋转图像正向 opencv旋转矩形角度范围_取值_02

其中第一个由于它是逆时针旋转的,所以,x轴会先碰到顶部的直线L1,第二个矩形是顺时针旋转的,所以x轴会先碰到左边的直线L2,很明显L2会比L1大,其中L1也会比它左边的直线小:

opencv如何自动旋转图像正向 opencv旋转矩形角度范围_顺时针_03

第一个矩形的角度只有-22度其中width为130,比height小。

opencv如何自动旋转图像正向 opencv旋转矩形角度范围_取值_04

第二个矩形的角度为-77度,width为234,比height109大,其中还比第一个矩形的width大。论证成立。

这里逆时针为负,顺时针为正:

opencv如何自动旋转图像正向 opencv旋转矩形角度范围_opencv如何自动旋转图像正向_05

(function () {('pre.prettyprint code').each(function () { var lines = 
  
 (this).text().split(′\n′).length;varnumbering = $(' 
 ').addClass('pre-numbering').hide(); 
  
 (this).addClass(′has−numbering′).parent().append(numbering); for (i = 1; i

        

以下是RotatedRect里面的角度angle的说明图:

opencv如何自动旋转图像正向 opencv旋转矩形角度范围_opencv如何自动旋转图像正向

这里要注意的4点是:

1、角度angle的取值是由RotatedRect的width和X轴的夹角组成的。

2、RotatedRect的width和height的选取跟矩形的尺寸无关,并非长的就是height,短的就是width。

3、OpenCV默认把 水平轴(x轴)逆时针旋转,碰到的第一个边 这个边的边长作为width。

4、angle的取值范围必然是负的,实际angle的取值范围为(-90,0]。

这是本人修改过的图,下面进入论证:

这里用了一幅图,里面有两个旋转的矩形,其中由于旋转的角度不一样,所以opencv找出来的RotatedRect里面的width有可能会比height大

opencv如何自动旋转图像正向 opencv旋转矩形角度范围_取值_02

其中第一个由于它是逆时针旋转的,所以,x轴会先碰到顶部的直线L1,第二个矩形是顺时针旋转的,所以x轴会先碰到左边的直线L2,很明显L2会比L1大,其中L1也会比它左边的直线小:

opencv如何自动旋转图像正向 opencv旋转矩形角度范围_顺时针_03

第一个矩形的角度只有-22度其中width为130,比height小。

opencv如何自动旋转图像正向 opencv旋转矩形角度范围_取值_04

第二个矩形的角度为-77度,width为234,比height109大,其中还比第一个矩形的width大。论证成立。

这里逆时针为负,顺时针为正:

opencv如何自动旋转图像正向 opencv旋转矩形角度范围_opencv如何自动旋转图像正向_05

(function () {('pre.prettyprint code').each(function () { var lines = 
  
 (this).text().split(′\n′).length;varnumbering = $(' 
 ').addClass('pre-numbering').hide(); 
  
 (this).addClass(′has−numbering′).parent().append(numbering); for (i = 1; i