gpt4 book ai didi

c++ - 有人可以解释我如何访问这个数组吗? (图像处理程序)

转载 作者:行者123 更新时间:2023-11-28 08:29:51 25 4
gpt4 key购买 nike

我正在为一个已经编写好的图像处理程序实现功能。我得到了函数的解释,但不确定它们是如何指定图像的像素的。

在这种情况下,我需要水平翻转图像,即绕垂直轴旋转 180 度

这就是我要翻转的“图像”吗?

    void Image::createImage(int width_x, int height_y)
{
width = width_x;
height = height_y;
if (pixelData!=NULL)
freePixelData();
if (width <= 0 || height <= 0) {
return;
}

pixelData = new Color* [width]; // array of Pixel*
for (int x = 0; x < width; x++) {
pixelData[x] = new Color [height]; // this is 2nd dimension of pixelData
}
}

我不知道我写的所有功能是否正确。此外,Image 类调用 Color

所以重新问:我在这里“翻转”了什么?

函数的原型(prototype)是:

void flipLeftRight();

由于函数没有输入,我被告知它修改了 pixelData,我该如何从左向右翻转?

最佳答案

原地快速翻转。未经测试,但想法是存在的。

<p></p>

<p>void flipHorizontal(u8 *image, u32 width, u32 height)
{
for(int i=0; i < height; i++)
{
for(int j=0; j < width/2; j++)
{
int sourceIndex = i * width + j;
int destIndex = (i+1) * width - j - 1;
image[sourceIndex] ^= image[destIndex];
image[destIndex] ^= image[sourceIndex];
image[sourceIndex] ^= image[destIndex];
}
}
}
</p>

关于c++ - 有人可以解释我如何访问这个数组吗? (图像处理程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2646294/

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