gpt4 book ai didi

c - 将图像旋转 90 度的算法? (没有额外的内存)

转载 作者:太空狗 更新时间:2023-10-29 16:20:45 25 4
gpt4 key购买 nike

在嵌入式 C 应用程序中,我有一个大图像,我想将其旋转 90 度。目前我使用众所周知的简单 algorithm去做这个。但是,该算法要求我再制作一张图像的副本。我想避免为副本分配内存,我宁愿就地旋转它。由于图像不是方形的,这很棘手。有人知道合适的算法吗?

编辑以添加说明,因为人们在问:

我以通常的格式存储图像:

// Images are 16 bpp
struct Image {
int width;
int height;
uint16_t * data;
};

uint16_t getPixel(Image *img, int x, int y)
{
return img->data[y * img->width + x];
}

我希望移动data 数组的内容,然后交换widthheight 成员变量。因此,如果我从一个 9x20 像素的图像开始,然后旋转它,我将得到一个 20x9 像素的图像。这改变了图像的步幅,这使算法变得非常复杂。

最佳答案

这可能有帮助:In-place matrix transposition .

(如 rlbond 所述,您可能还需要在转置后进行一些镜像操作)。

关于c - 将图像旋转 90 度的算法? (没有额外的内存),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2968397/

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