• 大小: 3KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-15
  • 语言: Matlab
  • 标签:

资源简介

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‘]

评论

共有 条评论

相关资源