我想从YUV图像中获得平面,但正在渲染的图像是红色的,我认为这是UV平面顺序的问题,但切换UV我得到一个蓝色图像(我可以看到图像,但它是蓝色或红色,取决于UV顺序)。
我不知道发生了什么事…有线索吗?我认为你是通过RGB查看器渲染YUV图像。
要从YUV转换为RGB,只需要通过一些系数进行转换。
https://en.wikipedia.org/wiki/YUVR = 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);