我正在寻找可以将 RGB 帧(例如像素格式为 ARGB)转换为 YUV(例如 YUV420)的示例 GLSL 片段着色器代码。
想象一个大小为 1920x1080 的 RGB 帧。我喜欢使用片段着色器将其转换为 YUV 帧。
你能指出可以在 UBuntu 机器上编译和运行的代码吗?
我正在寻找可以将 RGB 帧(例如像素格式为 ARGB)转换为 YUV(例如 YUV420)的示例 GLSL 片段着色器代码。
想象一个大小为 1920x1080 的 RGB 帧。我喜欢使用片段着色器将其转换为 YUV 帧。
你能指出可以在 UBuntu 机器上编译和运行的代码吗?
为了将来参考,可以在Gstreamer gst-plugins-gl 代码库中找到一堆 GLSL 着色器中的色彩空间转换:)
首先,您应该知道您的问题措辞不当。没有人会为您编写示例代码。您可以使用搜索引擎(甚至搜索此站点)获取将 RGB 转换为 YUV 的代码。
我已经写了一个类似于你在这里寻找的答案。它从 RGB 转换为 YIQ,对色调进行一些转换并转换回来。如果您需要的话,您可以使用 Y'CbCr 矩阵而不是 YIQ 进行颜色转换。
但是,它不会向下转换为 4:2:0。不过,这应该很容易做到。一旦它是 Y'CbCr 格式,您可以根据需要对适当的通道进行下采样。我建议首先对这些通道进行低通滤波器以避免混叠伪影。
我不使用 Linux,所以没有在 Ubuntu 上测试过。祝你好运。
此链接使用计算着色器 GLSL 实现了 YUV 4:2:2 v210 到 RGB 的实现。YUV 4:2:2 v210 --> RGB GLSL 源代码