OpenGL에서 색상 변환을 수행하는 방법이 있습니까 (예 : RGB에서 YUV420p 앞뒤로)? 백 버퍼의 내용, 텍스처 또는 FBO를 사용할 수 있습니다. 이 질문은 여기에서 보았지만 OpenGL 1.1로 제한되어 있으며 OpenGL의 특정 버전에는 제한되지 않습니다. OpenGL Colorspace ConversionOpenGL의 색상 공간 변환
최신 버전에서는 더 빠르고 새로운 방법이 있는지 궁금합니다. 하드웨어와 관련된 사항을 사용하지 않기를 원하지만 필요한 경우 NVIDIA GPU로 작업하고 있습니다.
(코드는 GPL2 +)입니다. [이 답변] (http://stackoverflow.com/questions/9234724/how-to-change-hue-of-a-texture-with-glsl/9234854#9234854)는 YIQ로 변환하는 예제를 제공합니다. Y'CbCr은 비슷하지만 약간 다른 행렬이 있습니다. – user1118321
감사합니다. 나는 그것을 일반적인 일로하고 그것을하기위한 라이브러리를 갖기를 바랬지 만 이것은 분명히 효과적입니다. 그건 분명히 저에게 RGB-> YUV444를 줄 것입니다. YUV420p의 다운 샘플링 된 크로마 채널은 어떻게 처리합니까? 이는 4 픽셀 당 하나의 샘플입니다. 귀하의 코드에서 나는 뭔가 다른 것을해야 할 것이라고 생각합니다. float I = dot (color, kRGBToI); float Q = 점 (color, kRGBToQ); – cloudraven
저는 어떤 라이브러리도 모르지만 4 : 2 : 0으로 내려 가기 위해 일종의 리샘플링을 할 수 있습니다. Cb/Cr 채널의 상자 흐림이 내 첫 시도이지만, 가우스 또는 Lanczos와 같은 다른 리샘플링 필터는 아마도 더 높은 품질 일 것입니다. – user1118321