gpt4 book ai didi

c++ - 程序只能正确旋转正方形图像

转载 作者:太空宇宙 更新时间:2023-11-04 12:44:20 24 4
gpt4 key购买 nike

我一直在尝试在 C++ 上处理 PGM 文件,获取它们的底片等。现在,一旦开始旋转,我就有了关于如何旋转矩阵的粗略伪代码,这是数字矩阵的结果:

Rotated matrix test

在纸面上,这似乎是正确的。现在,当我应用相同的算法来旋转图像时,它只适用于正方形图像(即相同的高度和宽度):

Rotated Square Image

但是在矩形图像上,它会产生这种结果:

Rotated Rectangle image

代码如下:

   void loadRotMatrix()
{
//transpose of matrix
for(int i=0;i<cols;i++)
{
for(int j=0;j<rows;j++)
{
rotatedmatrix[i][j] = matrix[j][i];
}
}
//flipped transposed
for(int i=0;i<rows;i++)
{
int temp =0;
for(int j=0,k=cols-1;j<k;j++,k--)
{
temp=rotatedmatrix[j][i];
rotatedmatrix[j][i]=rotatedmatrix[k][i];
rotatedmatrix[k][i]=temp;
}
}
}

现在我终其一生都无法理解这里发生了什么,以及是什么让我的狗变成了 hell 犬 :p

最佳答案

当图像不是矩形时,数组的形状(宽度和高度)不同。

您需要将数组旋转到另一个数组中以使索引有意义。

int sourceMatrix[100][200];

int destMatrix[200][100];

关于c++ - 程序只能正确旋转正方形图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52455691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com