Matlab在OpenCV中的imrotate函数的等价函数

时间:2015-03-25 09:09:06

标签: c++ matlab opencv

在尝试将Matlab的imrotate函数转换为OpenCV时,我得到了不同的结果。

在Matlab中:

A = [1 2 3; 4 5 6];
rotA = imrotate(A, 45, 'bilinear', 'crop');

这给了我:

rotA = 
   0.7233    2.7929    5.2233
   1.3520    4.2071    2.3520

在OpenCV中,我做了:

cv::Mat A = cv::Mat::zeros(2, 3, CV_32FC1);
A.at<float>(0, 0) = 1;
A.at<float>(0, 1) = 2;
A.at<float>(0, 2) = 3;
A.at<float>(1, 0) = 4;
A.at<float>(1, 1) = 5;
A.at<float>(1, 2) = 6;
cv::Mat rotationMatA = cv::getRotationMatrix2D(cv::Point(1, 1), 45, 1.0);
cv::Mat rotA;
cv::warpAffine(A, rotA, rotationMatA, rotA.size());

这给了我:

rotA = 
      1.1875   3.5625   3.5625
      2.125    5        1.6083984

造成这种差异的原因是什么?我怎样才能获得与Matlab相同的结果?提前致谢。

0 个答案:

没有答案