本文介绍了从RGB颜色空间转换至YUV颜色空间的方法,提供了详细的转换公式和步骤,适用于图像处理及视频编码领域。
RGB 到 YUV 的转换(绝对好用)C++ 源代码
在下面的段落中,我将提供一个用于将 RGB 转换为 YUV 格式的 C++ 代码示例,该代码已被证明非常实用。
首先定义颜色空间之间的变换公式。YUV 颜色模型通常由亮度(Luminance)和两个色度分量组成:红色-蓝色差异的蓝差信号(Blue-difference Chroma Signal, U 或 B),以及绿色-黄色差异的红差信号(Red-difference Chroma Signal, V 或 R)。RGB 到 YUV 的转换公式如下:
Y = 0.299 * R + 0.587 * G + 0.114 * B
U = -0.168736 * R - 0.331264 * G + 0.5 * B + 128
V = 0.5 * R - 0.418688 * G - 0.081312 * B + 128
以下是将 RGB 转换为 YUV 的 C++ 函数实现:
```cpp
void rgb_to_yuv(int r, int g, int b,
unsigned char &y, unsigned char &u, unsigned char &v)
{
y = (unsigned char)(0.299 * r + 0.587 * g + 0.114 * b);
u = (unsigned char)((-0.168736) * r - 0.331264 * g + 0.5 * b) + 128;
v = (unsigned char)(0.5 * r - 0.418688 * g - 0.081312 * b) + 128;
}
```
此函数接受 RGB 值作为输入,并输出对应的 YUV 分量。请注意,这里的 R、G 和 B 的值范围为 0 到 255。
为了更高效地处理大量像素数据,在实际应用中可以考虑使用 SIMD(单指令多数据流)技术来优化转换过程。
以上就是将 RGB 转换为 YUV 格式的 C++ 实现方法。