1. 转换公式
- YUV(256 级别) 可以从8位 RGB 直接计算:
Y = 0.299 R + 0.587 G + 0.114 B
U = - 0.1687 R - 0.3313 G + 0.5 B + 128
V = 0.5 R - 0.4187 G - 0.0813 B + 128 - 反过来,RGB 也可以直接从YUV (256级别) 计算:
R = Y + 1.402 (Cr-128)
G = Y - 0.34414 (Cb-128) - 0.71414 (Cr-128)
B = Y + 1.772 (Cb-128)
2.Python code
import argparse
parser = argparse.ArgumentParser(description='RGB2YUV')
parser.add_argument('--R', type=int, default=0)
parser.add_argument('--G', type=int, default=0)
parser.add_argument('--B', type=int, default=0)
args = parser.parse_args()
R = args.R
G = args.G
B = args.B
print('%d,%d,%d'%(R,G,B))
Y = round(0.299 * R + 0.587 * G + 0.114 * B)
U = round(-0.1687 * R - 0.3313 * G + 0.5 * B + 128)
V = round(0.5 * R - 0.4187 * G - 0.0813 * B + 128)
print('{0x%x, 0x%x, 0x%x}'%(Y, U, V))