实验1 | 图像YUV格式转RGB格式

一、实验要求

将YUV格式的图像转为RGB格式

二、实验思路

先将down.yuv的4:2:0格式转为4:4:4格式,再通过公式转为rgb格式。
R=Y+1.403×(V−128)
G=Y–0.344×(U–128)–0.714×(V–128)
B=Y+1.772×(U–128)

三、试验记录

1、RGB TO YUV

仔细研究了老师给的代码并进行了测试:
命令参数:down.rgb down1.yuv 256 256

2、YUV TO RGB

命令参数:down.yuv down1.rgb 256 256

yuv2rgb.h

int YUV2RGB (int x_dim, int y_dim, void *bmp, void *y_out, void *u_out, void *v_out, int flip);

void InitLookupTable();

main.cpp

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include "yuv2rgb.h"

#define u_int8_t	unsigned __int8
#define u_int		unsigned __int32
#define u_int32_t	unsigned __int32
#define FALSE		false
#define TRUE		true


int main(int argc, char** argv)
{
   
	
	u_int frameWidth = 352;		
	u_int frameHeight = 240;	
	bool flip = TRUE;		
	unsigned int i;

	char* yuvFileName = NULL;
	char* rgbFileName = NULL;
	FILE* yuvFile = NULL;
	FILE* rgbFile = NULL;
	u_int8_t* rgbBuf = NULL;
	u_int8_t* yuvBuf = NULL;
	u_int8_t* yBuf = NULL;
	u_int8_t* uBuf = NULL;
	u_int8_t* vBuf = NULL;
	u_int32_t videoFramesWritten = 0;

	yuvFileName = argv[1];
	rgbFileName = argv[2];

	frameWidth = atoi(argv[3]);
	frameHeight = atoi(argv[4]);

	//open the YUV file
	yuvFile = fopen(yuvFileName, "rb");
	if (yuvFile == NULL)
	{
   
		printf("cannot find yuv file\n");
		exit(1);
	}
	else
	{
   
		printf("The input yuv file is %s\n", yuvFileName);
	}

	//open the RAW file
	rgbFile = fopen(rgbFileName, "wb");
	if (rgbFile == NULL)
	{
   
		printf("cannot find rgb file\n");
		exit(1);
	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值