资源简介
matlab程序实现RGB图像转换为YUV视频序列,可以是单个图像,也可以是多个图像的批量处理。
代码片段和文件信息
function write_gim_in_yuvfile( gim file_name yuvformat bitdepth )
%write_gim_in_yuvfile: 将gim中的数据写入到yuv文件中去。
%将几何图像以指定的采样格式写入到yuv文件中去,每个分量为8位或16位比特深度
%gim:量化之后的几何图像。
%file_name: 写入的yuv文件名称前缀。
%yuvformat: 指定的yuv采样格式,默认只处理4:4:4 4:2:0 4:0:0三种格式,其中,
% 对于4:4:4的采样格式,将几何图像的三个分量分别用yuv三分量存储;
% 对于4:2:0和4:0:0的采样格式,将几何图像的三个分量分别存储到三个yuv文
% 件中去,用其y分量存储颜色值,u或v分量为零或没有。
%bitdepth: yuv每个分量的比特深度以字符串的形式表示,如‘16‘
% gI = imread(‘D:\学习\5.bmp‘);
%
% R=gI(::1);
% G=gI(::2);
% B=gI(::3);
% Y = 0.299*R + 0.587*G + 0.114*B;
% U = -0.147*R - 0.289*G + 0.436*B;
% V = 0.615*R - 0.515*G - 0.100*B;
% sgI=cat(3YUV);
% gim = sgI;
if ~isinteger(gim)
gim = round(gim);
end
kind_w = strfind(file_name‘.yuv‘);
if ~isempty(kind_w)
%%%%去除文件类型
file_name = file_name(1:kind_w(1)-1);
end
if strcmp(bitdepth ‘8‘)
precision = ‘uint8‘;
elseif strcmp(bitdepth ‘16‘)
precision = ‘uint16‘;
else
error(‘MATLAB:write_gim_in_yuvfile:errorBitdepth‘ ...
‘the bitdepth can only be 8 or 16.‘);
return;
end
if strcmp(yuvformat ‘4:4:4‘)
fid = fopen([file_name ‘.yuv‘] ‘w‘);
for i=1:3
fwrite(fid gim(::i)‘ precision);
end
fclose(fid);
elseif strcmp(yuvformat ‘4:2:0‘)
fid = fopen([file_name ‘.yuv‘]
评论
共有 条评论