Python 实现RGB和YUV互转

RGB和YUV互转

python 复制代码
class Color:
    # BT601 数字Full range
    def __init__(self):
        pass

    def YUV2RGB(self, Y, U, V):
        # R,G,B (0~255)
        R= Y + ((360 * (V - 128))>>8)
        G= Y - (( ( 88 * (U - 128)  + 184 * (V - 128)) )>>8) 
        B= Y +((455 * (U - 128))>>8) 
        return R,G,B
    
    def RGB2YUV(self, R, G, B):
        # Y(0~255),  U,V(-128~128)          
        Y = (77*R + 150*G + 29*B)>>8
        U = ((-44*R  - 87*G  + 131*B)>>8) + 128
        V = ((131*R - 110*G - 21*B)>>8) + 128
        return Y,U,V
    
    def YUV2RGBF(self, Y, U, V):
        # R,G,B (0.0~255.0)
        R = Y+1.4075*(V-128)
        G = Y-0.3455*(U-128)-0.7169*(V-128)
        B = Y+1.779*(U-128)
        return R,G,B
    
    def RGB2YUVF(self, R, G, B):
        # Y(0.0~255.0),  U,V(-128.0~128.0)
        Y = 0.299*R + 0.587*G + 0.114*B
        U = -0.169*R - 0.331*G + 0.5*B + 128
        V = 0.5*R - 0.419*G - 0.081*B + 128
        return Y,U,V


# 测试代码:    
color = Color()

y,u,v = color.RGB2YUV(255, 255, 255)
print("Y:{:.02f}, U:{:.02f}, V:{:.02f}".format(y, u, v))

r,g,b = color.YUV2RGB(y,u,v)
print("R:{:.02f}, G:{:.02f}, B:{:.02f}".format(r, g, b))
相关推荐
Wyz20121024几秒前
CSS如何实现导航栏下划线随鼠标移动_利用-hover伪类与过渡动画控制
jvm·数据库·python
2201_761040591 分钟前
SQL如何统计每个用户的首次行为时间_MIN聚合与分组
jvm·数据库·python
qq_189807037 分钟前
mysql如何实现定时清理缓存数据_利用event scheduler执行
jvm·数据库·python
编程大师哥9 分钟前
C++类和对象
开发语言·c++·算法
Polar__Star9 分钟前
golang如何实现低功耗设备唤醒机制_golang低功耗设备唤醒机制实现教程
jvm·数据库·python
M1582276905510 分钟前
工业 CAN 总线无线互联利器|4 路 CAN 转 4G/WiFi 网关 产品介绍
开发语言·php
a95114164211 分钟前
CSS怎么在flex布局中实现项目均分间距_设置justify-content space-evenly
jvm·数据库·python
2201_7610405917 分钟前
Golang如何做灰度发布_Golang灰度发布教程【实战】
jvm·数据库·python
baidu_3409988224 分钟前
CSS Grid布局如何实现项目在网格内填充_掌握justify-items属性
jvm·数据库·python
2401_8971905528 分钟前
JavaScript中数组洗牌算法Shuffle的随机性优化处理
jvm·数据库·python