1

我有一个 YUV 420 (144x176) 文件,我从中读取第一帧并将其 YUV 组件转换为 RGB 数组int rgb[HEIGHT*WIDTH*3];,我在其中存储 R1G1B1...RnGnBn 并有一个std::vector<unsigned char> image; image.resize(width * height * 4);. 我的问题是:当我使用unsigned error = lodepng::encode(filename, image, width, height);它时没有错误地处理并生成一个PNG文件,但这个文件甚至看起来不像原始图像,我认为它使用RGBA而我只有RGB,如何修复它?

PS不知道这个^信息是否足够,如果没有,请告诉我。

4

1 回答 1

1

好的,这个问题现在应该结束了。我所做的只是将 255 添加为第 4 位的 Alpha,如下所示:

if (i%3==0 && i != 0)
            image[k++] = 255;
        image[k] = rgb[i];

PS 我错过的另一件重要的事情是在从 YUV 文件读取时将像素放在它们的真实位置,我的意思是像 Wiki 的图所示。如果您遇到 YUV 问题,请注意这一点。

于 2012-12-12T13:59:18.130 回答