如果您以“错误的顺序”从内存中读取图像,则其本质上与旋转图像相同。这可能不适合您正在做的任何事情,但是这里有:
image[y][x] /* assuming this is the original orientation */
image[x][original_width - y] /* rotated 90 degrees ccw */
image[original_height - x][y] /* 90 degrees cw */
image[original_height - y][original_width - x] /* 180 degrees */
0
在嵌入式C应用程序中,我有一张想要旋转90度的大图像。目前,我使用著名的简单算法来执行此操作。但是,此算法要求我制作该图像的另一个副本。我想避免为副本分配内存,我宁愿就地旋转它。由于图像不是方形的,因此很棘手。有人知道合适的算法吗?
编辑添加澄清,因为人们在问:
我以通常的格式存储图像:
我希望移动
data
数组的内容,然后交换width
和height
成员变量。因此,如果我从9x20像素的图像开始,然后旋转它,则最终会得到20x9像素的图像。这改变了图像的步幅,这使算法非常复杂。