我将32 bpp位图转换为带有256色托盘的8bpp,这个图像我想用h264进行编码并通过套接字发送。另一方面解码帧并将其显示在我的UI上。
从编码器,侧面:
从解码器,侧面。
按照上述步骤操作后,我会得到完全失真的图像。当我不使用调色板时,我会得到一张黑白图像。
我不清楚如何使用h264对8bpp 256调色板位图进行编码并相应地对其进行解码。请帮我解决这个问题。
在Windows平台上使用C ++。
提前致谢, 保罗。
答案 0 :(得分:0)
h.264(默认情况下)不是无损编解码器。所以你不会得到你逐个像素的确切颜色。在YUV中,Y平面是亮度(黑色和白色),UV平面是色度。所以你的紫外线飞机在这里是空的。 Y平面以有损方式压缩。所以你可能有一个看起来像0 =黑色1 =红色2 =绿色... 255 =白色的托盘。你输入了2个像素。在压缩期间,为了消除图像中的复杂性以减小文件大小,2可能变为1.在黑白图像中,您将不会注意到差异。但是当您应用托盘时,绿色像素才会变为红色。
您需要使用无损编解码器,或将256色图像编码为YUV彩色图像。然后,通过查找最接近的颜色或每个解码的像素,后解码将颜色重新调整回您想要的托盘。