【matlab】:matlab中 RGB到YUV的转变

23 篇文章 15 订阅

写这篇文章之前,首先我们得确定什么是RGB,什么是YUV
RGB代表着 红色,绿色,蓝色三种颜色

其中分别是这么分别出来的,值都是在0-255之前,其中越接近于0颜色越显得黑,越紧接近于255,越显得颜色上的白。从0-255的各个区段,显示出了各种不同的颜色。

想要查看具体颜色的分类,需要自己去查表

然后是YUV
其中“Y”表示明亮度(Luminance或Luma),也就是灰阶值;而“U”和“V” 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度

很简单的描述他们之间的转换关系只需要一个公式即可
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

下面是写出来的代码:

#include <iostream>
using namespace std;
int main(){
    float r,g,b,y,u,v;
    while(1){
        cin>>r>>g>>b;
        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;
        cout<<y<<" "<<u<<" "<<v<<endl;
    }
    return 0;
}
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值