2

我正在寻找可以将 RGB 帧(例如像素格式为 ARGB)转换为 YUV(例如 YUV420)的示例 GLSL 片段着色器代码。

想象一个大小为 1920x1080 的 RGB 帧。我喜欢使用片段着色器将其转换为 YUV 帧。

你能指出可以在 UBuntu 机器上编译和运行的代码吗?

4

3 回答 3

4

为了将来参考,可以在Gstreamer gst-plugins-gl 代码库中找到一堆 GLSL 着色器中的色彩空间转换:)

于 2014-02-26T09:03:52.617 回答
1

首先,您应该知道您的问题措辞不当。没有人会为您编写示例代码。您可以使用搜索引擎(甚至搜索此站点)获取将 RGB 转换为 YUV 的代码。

我已经写了一个类似于你在这里寻找的答案。它从 RGB 转换为 YIQ,对色调进行一些转换并转换回来。如果您需要的话,您可以使用 Y'CbCr 矩阵而不是 YIQ 进行颜色转换。

但是,它不会向下转换为 4:2:0。不过,这应该很容易做到。一旦它是 Y'CbCr 格式,您可以根据需要对适当的通道进行下采样。我建议首先对这些通道进行低通滤波器以避免混叠伪影。

我不使用 Linux,所以没有在 Ubuntu 上测试过。祝你好运。

于 2013-08-16T03:57:56.773 回答
-1

此链接使用计算着色器 GLSL 实现了 YUV 4:2:2 v210 到 RGB 的实现。YUV 4:2:2 v210 --> RGB GLSL 源代码

于 2015-04-13T10:00:40.167 回答