RGB与YUV文件的互转

本文介绍了RGB到YUV的颜色转换公式,并提供了相应的转换代码。在YUV转RGB的过程中,出现部分区域的色块现象,可能由于相邻像素共用色度信息导致。
摘要由CSDN通过智能技术生成

RGB转YUV公式
Y=0.2990R+0.5870G+0.1140B
U=-0.1684R-0.3316G+0.5B+128
V=0.5R-0.4187G-0.0813B+128
YUV转RGB公式
R=Y+1.13983*(V-128)
G=Y-0.39465*(U-128)-0.58260*(V-128)
B=Y+2.03211+(U-128)

原始的RGB文件(不知道为什么YUVViewer看rgb文件上下是颠倒的)

代码如下

#include <iostream>
#include<stdio.h>
using namespace std;
int main(int argc,char* argv[])
{
   
    void Lookuptable();
    float aaa = RGBYUV00813[25];
    FILE* rgbFILE = NULL;
    FILE* yuvFILE = NULL;
    rgbFILE = fopen("down.rgb", "rb");
    yuvFILE = fopen("argv[2]", "wb");
    fseek(rgbFILE, 0L, SEEK_END);
    int size_rgb;
    size_rgb = ftell(rgbFILE);
    cout << size_rgb << endl;
    fseek(rgbFILE, 0L, SEEK_SET);//必须回到文件开始,不然读取不到需要的信息
    unsigned char* RGB_BUFFER = new unsigned char[size_rgb];
    unsigned char* Y_BUFFER = new unsigned char[size_rgb / 3];
    unsigned char* U_BUFFER = new unsigned char[size_rgb / 12];
    unsigned char* V_BUFFER = new unsigned char[size_rgb / 12];
    fread(RGB_BUFFER, sizeof(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值