gpt4 book ai didi

c++ - 将图像加载到 RGBA 数组 C++

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:21:39 24 4
gpt4 key购买 nike

有没有办法将每个像素的 RGBA 数据加载到三维 int 数组中?例如 60,20 处的像素是黑色我希望 [60][20] 处的数组为 0,0,0,100

最佳答案

我之前在处理视频时就这样做过,因为视频帧总是 640x480 (NTSC)。

您可以将 RGBA 声明为结构:

struct rgba {
unsigned char red;
unsigned char green;
unsigned char blue;
unsigned char alpha;
};

然后你声明你的数组:

rgba image[640][480];

(注意:您可能想要反转高度和宽度,我会让您发现原因...)

负载变成这样:

file.read(image, sizeof(image));

当然,这意味着文件数据的格式正确:即原始 RGBA 采用相同的“字节序”等。不过在大多数情况下,这并不是图像在磁盘上的保存方式。

正如 glampert 所提到的,一个库是 ImageMagick。您还可以为 JPEG、PNG、GIF87a 使用特定的加载器……但是,在所有这些情况下,您不太可能直接将图像加载到数组中。您需要将某个 Image 对象缓冲区的拷贝复制到您的数组。

假设你使用一个库给你一个对象,可能是这样的:

Image img;
img.load(filename);
memcpy(image, img.data(), sizeof(image));

这是非常基本的代码,您应该测试 load() 是否有效、格式是否正确以及宽度 x 高度是否正确。

关于c++ - 将图像加载到 RGBA 数组 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25298341/

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