一般在測試影像處理的演算法時,常會需要將讀取影像檔或是影片檔,在Matlab裡,mmreader是一個通用的影片檔讀取的function,以下我參考Matlab的說明文件,教你如何去使用mmreader。
另外,我必需先說明,mmreader只限定在Windows平台上使用。若你是在server(例如Windows Server 2008)平台上,也請注意,你必需先安裝media player。
【Access Video】
>> trafficObj = mmreader('traffic.avi') % 將traffic.avi影片建立成Object
Summary of Multimedia Reader Object for 'traffic.avi'.
Video Parameters: 15.00 frames per second, RGB24 160x120. 120 total video frames available.
>> Property = get(trafficObj) %物件的特性請參考下表
Property =
Duration: 8 Name: 'traffic.avi' Path: 'C:\Program Files\MATLAB\R2008a\toolbox\images\imdemos' Tag: '' Type: 'mmreader' UserData: [] BitsPerPixel: 24 FrameRate: 15.0000 Height: 120 NumberOfFrames: 120 VideoFormat: 'RGB24' Width: 160
>> video = read(trafficObj); % 讀取影片的內容 Warning: The end of file was reached before the requested frames were read completely. Frames 1 through 119 were returned. >> implay(video, Property.FrameRate); % 播放影片 (如下圖) |
特 性 |
描 述 |
Duration |
影片的總長度,以秒計算。 |
Name |
該物件的檔案名稱。 |
Path |
該檔案所存放的完整路徑。 |
Tag |
使用者自訂的標籤名稱。 |
Type |
物件的類別名稱,預設為mmreader。 |
UserData |
使用者自行定義的資料,可提供使用者註記物件的資料。 |
BitsPerPixel |
每個pixel所佔的位元數。 |
FrameRate |
每秒所顯示的影像張數。 |
Height |
影像的解析度(高)。 |
NumberOfFrames |
影片所包含的總frame數。 |
VideoFormat |
影片的色彩格式。 |
Width |
影像的解析度(寬)。 |
【Create a Matlab movie struct】
>> readerobj = mmreader('xylophone.mpg') % 建立物件
Summary of Multimedia Reader Object for 'xylophone.mpg'.
Video Parameters: 29.97 frames per second, RGB24 320x240. 141 total video frames available.
>> vidFrames = read(readerobj); % 讀取影片的內容 >> numFrames = get(readerobj, 'numberOfFrames'); >> for k = 1 : numFrames % 轉換成movie結構 mov(k).cdata = vidFrames(:,:,:,k); mov(k).colormap = []; end >> movie(mov, 1, readerobj.FrameRate); % 使用movie指令播放影片 |
【Appendix】
大家可以參考一下wiki,AVI是一種檔案的存放格式,是由微軟所提出來的。
AVI檔裡面所存放的影像就有很多種格式,例如MPEG4、H264或是未壓縮。
Matlab所支援的壓縮格式並多,你也可以付費使用官方的解碼器,或者
是自己將免費的解碼器弄上去,再不然就是將有壓縮的影片轉成未壓縮。
在XP上,大家可以在點右鍵->內容->摘要-進階,就可以看的影像的資訊了。
如下,大家可以參考一下兩種不同的差別。
【Reference】