YUV文件的转换方法

YUV文件包括各种格式(如下图),有时需要它们之间的转换,下面提供2种方法。一种是采用集成软件的方法;第二种是采用C++源代码的方法,仅供参考。

第一种方法:集成软件的方法

首先,在网址:http://www.sunrayimage.com/ 下载YUVTools_3.0即可。

此软件的使用方法极为简单,在此不再赘述。

第二种方法:C++源代码

下面提供一个参考源码,可以根据自己需求进行修改。

#include <stdio.h>
#include <string.h>

#define		READ_WRITE_FILE_SIZE	176*144*2

unsigned char filebuf[38017] = {0};

int YUV422To420(unsigned char yuv422[], unsigned char yuv420[], int width, int height)
{        

       int ynum=width*height;
	   int i,j,k=0;
	   for(i=0;i<ynum;i++){
		   yuv420[i]=yuv422[i*2];
			//printf("%d\n",i);
	   }
	   for(i=0;i<height;i++){
		   if((i%2)!=0)continue;
		   for(j=0;j<(width/2);j++){
			   if((4*j+1)>(2*width))break;
			   yuv420[ynum+k*2*width/4+j]=yuv422[i*2*width+4*j+1];
			  printf("%d+%d*%d*%d/4+%d=%d\n",ynum,k,2,width,j,ynum+k*2*width/4+j);
		   }
		    k++;
	   }
	   k=0;
	   for(i=0;i<height;i++){
		   if((i%2)==0)continue;
		   for(j=0;j<(width/2);j++){
			   if((4*j+3)>(2*width))break;
			   yuv420[ynum+ynum/4+k*2*width/4+j]=yuv422[i*2*width+4*j+3];
			  printf("%d+%d+%d*%d*%d/4+%d=%d\n",ynum,ynum/4,k,2,width,j,ynum+ynum/4+k*2*width/4+j);
		   }
		    k++;
	   }

       return 1;
}

int main(void)
{
	int len = 0;
	FILE *fpr, *fpw;
	unsigned char buf[READ_WRITE_FILE_SIZE];
	fpr = fopen( "WEBCAM-00012.YUV", "rb" );
	fpw = fopen( "yuyv_2_yy_u_v.yuv", "wb" );
	if( fpr == NULL || fpw == NULL )
	{
		printf("can not read or write file\n");
		fcloseall();
		return 1;
	}
	fread( buf, READ_WRITE_FILE_SIZE, 1, fpr );
	if(YUV422To420(buf,filebuf,176,144))printf("ok\n");
	printf("size:%d",sizeof(filebuf));
	fwrite( &filebuf, sizeof(filebuf), 1, fpw );
	fcloseall();
	return 0;
}
时间: 2024-11-02 22:50:45

YUV文件的转换方法的相关文章

如何使用MATLAB语言读写YUV文件

本文详细介绍了如何使用MATLAB进行读写YUV文件,并给出了详细的代码及其分析. 示例程序如下: close all; clear; fid1=fopen('D:\HM-14.0-ROI\bin\vc10\Win32\Release\Result\背景建模Result\hall_cif_352x288_300\QP=22\bgf_rec.yuv','rb'); fid2=fopen('D:\HM-14.0-ROI\bin\vc10\Win32\Release\Result\背景建模Result

RMAN 数据库克隆文件位置转换方法

      在使用RMAN克隆数据库时,如果辅助数据库(新数据库)使用了与目标数据库(原数据库)使用了不同的路径,那么就存在位置转换的问题.在Oracle中,控制文件用于定位数据文件以及联机重做日志文件,如果没有正确的转换,控制文件压根就找不到相应的数据文件,日志文件.对此Oralce为我们提供了三种文件位置的转换方法.本文即是对这三种转换方法的描述.   1.使用db_file_name_convert与log_file_name_convert参数 --我们可以在辅助数据库参数文件spfil

Oracle 基于备份控制文件的恢复(unsing backup controlfile)

    Oracle 基于备份控制文件的恢复(unsing backup controlfile)     有关RMAN的备份恢复与管理请参考     RMAN 概述及其体系结构     RMAN 配置.监控与管理     RMAN 备份详解     RMAN 还原与恢复     RMAN catalog 的创建和使用     基于catalog 创建RMAN存储脚本     基于catalog 的RMAN 备份与恢复     RMAN 备份路径困惑     使用RMAN实现异机备份恢复(WIN

【转载】SDL2.0在mfc窗口中显示yuv的一种方法

DWORD ThreadFun(){    //用mfc窗口句柄创建一个sdl window    SDL_Window * pWindow = SDL_CreateWindowFrom( (void *)( GetDlgItem(IDC_STATIC1)->GetSafeHwnd() ) );     SDL_Rect sdlRT;    sdlRT.h = 288;    sdlRT.w = 352;    sdlRT.x = 0;    sdlRT.y = 0;     SDL_Rect

YUV格式详解

YUV是指亮度参量和色度参量分开表示的像素格式,而这样分开的好处就是不但可以避免相互干扰,还可以降低色度的采样率而不会对图像质量影响太大.YUV是一个比较笼统地说法,针对它的具体排列方式,可以分为很多种具体的格式.转载一篇对yuv格式解释的比较清楚地文章,也可以直接参考微软的那篇文章. 对于YUV格式,比较原始的讲解是MPEG-2 VIDEO部分的解释,当然后来微软有一个比较经典的解释,中文的大多是翻译这篇文章的.文章来源:http://msdn.microsoft.com/en-us/libr

Oracle 快照控制文件(snapshot control file)

      听说过Oracle 控制文件,还有快照控制文件这个说法呢?没错,尽管快照控制文件很少被提及,但确实是存在,只不过在使用RMAN时这个快照控制文件被使用.回顾一下 Oracle 控制文件,我们知道控制文件是Oracle体系结构中的重要组成部分之一,记录了当前数据库的结构信息,同时也包含数据文件及日志文件的信息以及相关的状态,归档信息,也记录了系统当前SCN的值等等.那快照控制文件也就是控制文件的一个副本,本文介绍了什么是快照控制文件以及何时被使用.   1.快照控制文件     快照控

【FFMpeg视频开发与应用基础】五、调用FFMpeg SDK封装音频和视频为视频文件

<FFMpeg视频开发与应用基础--使用FFMpeg工具与SDK>视频教程已经在"CSDN学院"上线,视频中包含了从0开始逐行代码实现FFMpeg视频开发的过程,欢迎观看!链接地址:FFMpeg视频开发与应用基础--使用FFMpeg工具与SDK 工程代码地址:FFmpeg_Tutorial 音频和视频的封装过程为解封装的逆过程,即将独立的音频数据和视频数据按照容器文件所规定的格式封装为一个完整的视频文件的过程.对于大多数消费者来说,视频封装的容器是大家最为熟悉的,因为它直接

YUV RGB 常见视频格式解析

I420是YUV格式的一种,而YUV有packed format和planar format两种,而I420属于planar format的一种. 同时I420表示了YUV的采样比例4:2:0.4:2:0的YUV并不是说没有V分量,而是指对于每一个行,只有一个U或者V分量.比如第一行里,是YUYYUY,到了第二行是YVYYVY,那么对于每一行来说就是4:2:0或者4:0:2.需要说明的是,这里的排列方式是针对packedformat而言的,因此并不适用于I420这样的planar format.

视音频数据处理入门:RGB、YUV像素数据处理【转】

转自:http://blog.csdn.net/leixiaohua1020/article/details/50534150 ===================================================== 视音频数据处理入门系列文章: 视音频数据处理入门:RGB.YUV像素数据处理 视音频数据处理入门:PCM音频采样数据处理 视音频数据处理入门:H.264视频码流解析 视音频数据处理入门:AAC音频码流解析 视音频数据处理入门:FLV封装格式解析 视音频数据处理入门