首页 > 代码库 > 如何使用MATLAB语言读写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\hall_cif_352x288_300\QP=22\cal_rec.yuv','rb');
outfid=fopen('D:\HM-14.0-ROI\bin\vc10\Win32\Release\Result\背景建模Result\hall_cif_352x288_300\QP=22\com_rec.yuv','wb');

%fseek(fid,352*288*1.5*10,'bof');
fseek(fid1,0,'bof');
fseek(fid2,0,'bof');


Y_bgf=fread(fid1,[352,288],'uint8');

for j=1:300
    Y_cal=fread(fid2,[352,288],'uint8');
    Cb_cal=fread(fid2,[352/2,288/2],'uint8');
    Cr_cal=fread(fid2,[352/2,288/2],'uint8');
    for x=1:352
        for y=1:288
            if Y_cal(x,y)<5
                Y_cal(x,y)=Y_bgf(x,y);
            end;
        end;
    end;
    fwrite(outfid,Y_cal,'uint8');
    fwrite(outfid,Cb_cal,'uint8');
    fwrite(outfid,Cr_cal,'uint8'); 
end;

fclose(fid1);
fclose(fid2);
fclose(outfid);


下面给出实验结果:

下图是背景建模得到的背景:

技术分享

下图是差分计算得到的差分图:

技术分享

下图采用上面代码得到的合成图:

技术分享

最后给出原图如下:

技术分享

从实验结果可以看出,合成图与原图在主观上基本没有差别。



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