古詩詞大全網 - 成語用法 - matlab能讀取什麽格式文件格式

matlab能讀取什麽格式文件格式

1、用matlab讀取avi 視頻(只能讀壹定壓縮各式的avi 電影,這是因為avi視頻文件的編碼

有很多,而matlab只支持部分編碼格式。可見

blog.csdn.net/IdoIwill/article/details/2125838) aviinfo('d:\abc.avi');

%顯示存在d 盤文件abc.avi 的信息,在matlab2010 版本中,該函數可以換成mmreader mov=aviread('abc:.avi'); %讀入電影abc.avi movie(mov); %放映電影

2、將avi視頻轉成圖片序列

mov=aviread('d:\abc.avi'); %讀入

Vframes=size(mov,2); %讀取視頻的幀數,mov 為1*1179 struct,struct就是第4點所介紹的 for i=1: Vframes

strtemp=strcat('d:\轉換的圖片\',int2str(i),'.','jpg'); %將每幀轉成.jpg 的圖片 imwrite(mov(i).cdata(:,:,), mov(i).colormap, strtemp); % 把圖像寫入磁盤 end

3、讀取avi視頻第index幀有三種使用方式(不適用於索引圖):

第壹種:mov=aviread(filename); % 讀入視頻

frame=mov(index); %讀取avi 文件的第index 幀圖像; img = frame.cdata; % 讀取圖像的顏色信息

第二種:frame = aviread(filename, index); img = frame.cdata;

第三種:mov = aviread(filename); frame = mov.cdata; img = mov{index}; 例:%讀取第壹幀圖像

mov = aviread('highwayI_raw.AVI'); frame=mov(index); imshow(frame.cdata);

4、讀取avi視頻第index幀圖像後,所儲存幀格式是壹個結構體(struct),該結構體有兩個元素:cdata 和colormap

例:

frame = aviread('highwayI_raw.AVI', i);

frame.cdata 表示了壹個數據數組,彩色圖像就是3 維的,灰度圖像就是2 維的。也就是相當於I=imread(‘abc.jpg’)後的數組I

frame.colormap 見(help aviread)

%%%%%了解了以上四點,處理視頻文件就可以相當於圖像文件壹樣處理了%%%%

5、將彩色圖像轉換為灰度圖像,很簡單:

frame = aviread('highwayI_raw.AVI', i);

f_gray = rgb2gray(frame.cdata); 這樣就可以將文件的第i幀轉換為灰度圖像。

6、 創建avi視頻文件

aviobj = avifile(filename)

aviobj = avifile(filename, 'Param1', Val1, 'Param2', Val2,...) 描述:

aviobj = avifile(filename) 創建壹個AVI文件,其名稱為filename,AVI文件對象的所有屬性均取默認值。如果文件名中並不包含擴展名,則avifile為filename自動添加擴展名.avi。AVI是壹種存儲聲音和圖像數據的文件格式。

avifile返回壹個指向AVI文件對象aviobj的句柄,使用該對象在其他函數中可以引用該對象。AVI文件對象支持控制被創建的AVI文件的各方面屬性和方法。

aviobj = avifile(filename, 'Param1', Val1, 'Param2', Val2,...)使用指定的參數設置創建壹個AVI文件。 參數說明表:

用戶也可以使用結構語法來設置AVI對象的屬性。Avifile對象的所有屬性名字和參數表中的名字壹樣,並且要完整(除了keyframe這個參數)。例如,設定質量屬性為100可以使用如下的語法

格式:

aviobj = avifile('myavifile'); aviobj.quality = 100;

實例

這壹實例顯示如何使用函數avifile創建AVI文件example.avi。 t = linspace(0,2.5*pi,40); fact = 10*sin(t); fig=figure;

aviobj = avifile('example.avi') [x,y,z] = peaks; for k=1:length(fact) h = surf(x,y,fact(k)*z); axis([-3 3 -3 3 -80 80]) axis off

caxis([-90 90]) F = getframe(fig);

aviobj = addframe(aviobj,F); end

close(fig)

aviobj = close(aviobj);

7、mmreader 類---創建壹個視頻文件讀取對象

其實在 matlab2010 中,會建議采用mmreader、mmfileinfo等函數,如果使用aviread會出現警告如下:

Warning: AVIREAD will be removed in a future release. Use MMREADER instead. 這是由於aviread接口需要要求avi文件時沒有壓縮的,這回導致其應用受到很大的 具體的mmreader 類描述可見matlab的help,以下摘自壹些重點: mmreader類 是為了創建壹個讀取視頻文件的多媒體讀取對象 描述:

函數 mmreader可以讀取所有的多媒體文件,返回值為壹個結構體;然後可以用read 函數進行讀取文件

mmreader 支持的文件格式由各個操作系統平臺決定

Window: AVI(.avi)/MPEG-1(.mgp)Window Media Video(.wmv,.asf,.asx)

Macintosh: AVI(.avi)/MPEG-1(.mpg)/MPEG(.mp4,.m4v)/蘋果Quick Time movie(.mov) 以及被QuickTime在蘋果系統上所支持的視頻格式

Linux: 支持系統中所安裝的GStreamer 0.10 支持的視頻格式,包括AVI/Ogg Theora(.ogg)

mmreader創建視頻文件有兩種 obj = mmreader(filename);

obj = mmreader(filename, ‘PropertyName’, ‘PropertyValue’);

第壹種只需提供(默認路徑名)+文件名,就可以返回壹個視頻對象;使用第二種方法,可以設置屬性名以及屬性值

obj具有的屬性如下: BitsPerPixel (只讀) 視頻的每個像素的位數 Duration (只讀) 每秒的總長度 FrameRate (只讀) 每秒的幀率 Height (只讀) 視頻每幀圖像的高度 Name (只讀) 對象所對應的視頻文件名 NumberOfFrames (只讀) 視頻流中的總幀數 Path (只讀)視頻文件所在的路徑名 Tag 定義視頻對象的標簽(默認’’) Type (只讀) 對象的類名—mmreader UserData 給用戶自定義數據的區域 VideoFormat (只讀) 視頻文件壓縮格式 Width (只讀)視頻每幀圖像的寬度 通常obj對象配合read方法使用;read的使用方法如下: video = read(obj);

video = read(obj,index); 或 video = read(obj, [index1,index2])

其實第壹種默認是read(obj, [1,inf]) 第壹種方法讀入obj視頻對象的所有幀; 第二種方法讀入obj視頻對象的第index幀.

第壹種方法返回的video對象是個4維數組,H-W-B-F H: 圖像幀的高度 W: 圖像幀的寬度 B: 圖像幀的顏色通道 F: 圖像幀的數目

第二種方法返回就是圖像幀的數據,灰度圖像返回二維數組,RGB24圖像返回三維數組。 讀取第壹幀圖像例子如下

obj = mmreader('abc.avi'); video = read(obj); img = video(:,:,:1); imshow(img);