資源簡介
視頻背景 讀取 幀差法,能有效讀取視頻背景 matlab程序

代碼片段和文件信息
close?all
clear?all
clc
disp(‘input?video‘);??????????????????%disp顯示,告訴使用者接下來要輸入視頻在這個代碼里disp指令對于視頻的讀取,跟蹤,播放沒有任何影響。控制臺就是你輸入指令的地方,disp會在那里進行輸出。
avi?=?aviread(‘E:\圖片類\海霧圖片\2013?1?13\2013?1?13海霧\qm0008277a(1).AVI‘);??????%讀入視頻samplevideo.avi
video?=?{avi.cdata};???????????????????%cdata:?M?x?N?x?3?的矩陣用來表示真彩色的圖像
[mns]=size(avi(1).cdata);
q=zeros(mn);
fR=q;
fG=q;
fB=q;
for?a?=?1:2:length(video)????????????????%length(video)表示這段視頻的幀數??
???%?subplot(221)
???%?imshow(video{a});?????????????????%按幀數順序顯示圖像
???%?title(‘原圖像‘);
????strtemp=strcat(‘E:\圖像去霧\幀差分法提取背景\轉換的圖片\2\‘int2str(a)‘.‘‘png‘);??%保存圖片
????imwrite(avi(a).cdatastrtemp‘png‘)
????%fr?=?avi(a).cdata;???????%?read?in?frame
????%fr_bw?=?rgb2gray(fr);???????%?convert?frame?to?grayscale
?????fR=double(avi(a).cdata(::1))+fR;
?????fG=double(avi(a).cdata(::2))+fG;
?????fB=double(avi(a).cdata(::3))+fB;
????%axis?image?off
????%drawnow;???????????????????????????%用于刷新屏幕的。當你的代碼執行時間長,需要反復執行plot時,Matlab程序不會馬上把圖像畫到figure上,這時,要想實時看到圖像的每一步變化情況,需要使用這個語句。??
end;
fR=uint8(fR*1/264);
fG=uint8(fG*1/264);
fB=uint8(fB*1/264);
B=cat(3fRfGfB);
figure;
imshow(B);
imwrite(B‘C:\Users\Administrator\Desktop\視頻處理\提取的背景圖片.jpg‘);
figure;imshow(avi(10).cdata);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1466??2013-01-13?20:02??讀取視頻背景程序\Test_1.m
?????目錄??????????0??2012-12-09?18:37??讀取視頻背景程序
-----------?---------??----------?-----??----
?????????????????1466????????????????????2
評論
共有 條評論