本文详细介绍了如何使用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);
下面给出实验结果:
下图是背景建模得到的背景:
下图是差分计算得到的差分图:
下图采用上面代码得到的合成图:
最后给出原图如下:
从实验结果可以看出,合成图与原图在主观上基本没有差别。
时间: 2024-12-14 06:11:56