天天看點

openCV是否隻能打開avi格式視訊

如果隻是做研究,用AviSynth + K-Lite Code Pack來解決這個問題吧。

K-Lite Code Pack裡面包括ffdshow,是一套video codec的組合,它提供

Video For Windows 的接口,OpenCV的這個函數就是用這個接口;

然後用AviSynth這個virtual frame server來包裝這個mpeg檔案,建立一

個簡單的script,比如mobile.avs,裡面隻有一行:

MpegSource("mobile.mpg")

當然這取決于你的mpeg的檔案的壓縮方式,也許需要額外的AviSynth的plugin.

裝好K-lite Codec和AviSynth之後,你可以先用播放器直接放這個mobile.avs

檔案看是否行得通。

視訊實際上的讀取過程是:

原始視訊 -> ffdshow -> AviSynth -> OpenCV -> IplImage

K-lite Codec Pack首頁:http://www.codecguide.com/download_kl.htm

AviSynth首頁:http://www.avisynth.org/

相關讨論區:http://www.doom9.org/

另外一條路是基于DirectShow filter/sample grabber的辦法來讀取video frames,

可以看看: http://windowssdk.msdn.microsoft.com/en-us/library/ms787867.aspx

這種方法需要下載下傳DirectX SDK和DirectShow的addon,同時也需要相關codec,

視訊的讀取過程是:

原始視訊 -> codec -> DirectShow(frame grabber) -> Windows Bitmap -> IplImage

如果是隻做研究用,推薦第一條;如果是商業用途,得要看license來決定了。