YUV转换只得到红色

  • 本文关键字:红色 转换 YUV yuv
  • 更新时间 :
  • 英文 :


我想从YUV图像中获得平面,但正在渲染的图像是红色的,我认为这是UV平面顺序的问题,但切换UV我得到一个蓝色图像(我可以看到图像,但它是蓝色或红色,取决于UV顺序)。

我不知道发生了什么事…有线索吗?

我认为你是通过RGB查看器渲染YUV图像。

要从YUV转换为RGB,只需要通过一些系数进行转换。

https://en.wikipedia.org/wiki/YUV

R = Y + 1,13983⋅V
G = Y − 0,39465⋅U − 0,58060⋅V
B = Y + 2,03211⋅U

查看wiki YCbCr上的图表,看起来您错过了Cb (U)通道。也许你还没有找到合适的补偿。如何对图像进行次采样?

是否设置了y和uv纹理的纹理参数?也许这就是原因。

glBindTexture(GL_TEXTURE_2D, textureY);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glBindTexture(GL_TEXTURE_2D, textureUV);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

最新更新