如何使用OpenCV实现imrotate功能

时间:2016-05-12 03:56:25

标签: c++ matlab opencv

是。我想得到与matlab中的imrotate相同的结果,但我无法理解。 更具体地说,我得到了垫子A

  

a =

 1     2     3
 4     5     6
  
    
      

imrotate(a,45)

    
  

ans =

 0     0     0     0     0
 0     0     3     6     0
 0     1     2     6     0
 0     1     4     0     0
 0     0     0     0     0

我怎样才能使用OpenCV?

1 个答案:

答案 0 :(得分:1)

您可能需要使用getRotationMatrix2D和warpAffine。 像这样:

Mat     A(5, 5, CV_8U, Scalar(0));  
Point   center(3, 3);  
double  angle = 45;  
int value=1;
for (int i = 2 ; i<4 ;i++)
{
    for (int j = 1 ; j <4 ;j++)
    {
        A.at(j,i) = value;
        value++;
    }
}
Mat matrix = getRotationMatrix2D(center, angle, 1.0);
Mat imgRotation;  
warpAffine(A, imgRotation, matrix, Size(5, 5));