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(