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))
相关推荐
叫我:松哥几秒前
基于数据挖掘的旅游景点个性化推荐系统设计与实现,Apriori和FP-Growth算法挖掘景点之间的关联规则
人工智能·python·算法·数据挖掘·数据分析·beautifulsoup
极光代码工作室1 分钟前
基于机器学习的客户分类系统设计
人工智能·python·深度学习·机器学习
copyer_xyf2 分钟前
FastAPI 核心语法
后端·python
SilentSamsara2 分钟前
scikit-learn 工作流工程化:Pipeline、ColumnTransformer 与自定义转换器
开发语言·人工智能·python·机器学习·青少年编程·numpy·scikit-learn
我命由我123453 分钟前
Kotlin 开发 - Kotlin 反引号转义关键字
android·java·开发语言·java-ee·kotlin·android jetpack·android runtime
Hillain7 分钟前
软件设计师设计模式
java·开发语言·经验分享·笔记·算法·设计模式·软考
拂拉氏9 分钟前
【项目分享-知识讲解】 C++标准库 list类的模拟实现
开发语言·c++·list·封装·stl标准库
码云骑士10 分钟前
【2.Java基础】Java常量与变量-从基本类型到类型转换全面掌握
java·开发语言
AI玫瑰助手11 分钟前
Python函数:匿名函数lambda的定义与使用场景
android·java·python
爱和冰阔落11 分钟前
Ollama 本地大模型部署实战:从安装到 RAG 知识库完整指南
开发语言·大模型·php·ollama