如何使用MATLAB語言讀寫YUV檔案

2021-06-27 20:44:43 字數 1531 閱讀 5898

本文詳細介紹了如何使用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如何讀寫檔案

很多時候,使用matlab生成資料和處理是一種不錯的選擇,往往需要讀取指定路徑的檔案,有時候還需要遍歷檔案,或者將處理的資料儲存在指定路徑的檔案之中,那麼如何使用matlab來讀寫檔案呢?if exist d path dir mkdir d path endfid fopen path,r pro...

matlab 如何使用mex

matlab與c語言混合程式設計介面 matlab是一種解釋性語言,不需要編譯,除錯比較方便,但是缺點是速度慢。這一點在執行複雜的科學演算法的時候體現極為明顯。而c語言雖然相對比 較複雜,但是執行效率很高,matlab很多內建函式都是用c寫的。另外有時候很多演算法已經已c語言的形式寫好,於是我們會想...

MATLAB 中如何使用 help

help help namehelp 會在命令行列出所有的主要 help 主題。每乙個主題對應 matlab 搜尋路徑中乙個資料夾名稱。help name 顯示 指定 name 對應的功能文字,name 可以是函式,方法,類,工具箱或者變數。name可以是操作符,函式名,類,方法,包,工具箱資料夾,...