在尝试将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相同的结果?提前致谢。