c++ - 如何使用OpenCV实现imrotate功能

标签 c++ matlab opencv

是的。我想得到与 matlab 中的 imrotate 相同的结果,但我不明白这一点。 更具体地说,我得到一个垫子 A

a =

 1     2     3
 4     5     6

imrotate(a, 45)

答案=

 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 做到这一点?

最佳答案

您可能需要使用 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));  

关于c++ - 如何使用OpenCV实现imrotate功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37176980/

相关文章:

algorithm - 从二进制卷中分离对象

opencv - 使用BRISK检测器/描述符OpenCV的性能问题

python - 图像分割中的轮廓补全

.net - 有专门为 OpenCV 2.2 写的书吗?

c++ - 使用已知 key 将密文解密为明文

c++ - 可以在卸载主机 DLL 之前卸载通过导入库链接的 DLL 吗?

c++ - 用于切换矩阵中的值的算法

c++ - 仅使用(稳定的)第三方库可以使我的代码无法正常工作

matlab - 如何在 MATLAB 中将矩阵乘以标量值

python - 如何删除 Blob 边界上的单个像素?