天天看點

OpenCV讀取AVI檔案

今天看到網上很多人問,cvCreateFileCapture讀取avi,為什麼總是傳回NULL. 我查了查文獻,總結如下:

(源程式附在最下) 問題:為什麼我的電腦支援AVI或者能夠播出AVI,但為什麼使用cvCreateFileCapture函數總傳回NULL呢? 答案:盡管是AVI檔案,但也可能使用了某種codec,例如:MJPEG Decompressor。 需要把它轉換OpenCV支援的AVI檔案. OpenCV支援的AVI如下:

Container FourCC Name Description
AVI 'DIB ' RGB(A) Uncompressed RGB, 24 or 32 bit
AVI 'I420' RAW I420 Uncompressed YUV, 4:2:0 chroma subsampled
AVI 'IYUV' RAW I420 identical to I420

轉換格式解決方法: 解決方法1: 下載下傳mencoder.exe, 在window指令行下使用:  mencoder in.avi -ovc raw -vf format=i420 -o out.avi (注:我測試了這個方法,沒有成功,原因不詳,希望有朋友們能夠詳細讨論一下。)

解決方法2:下載下傳VitualDub, 我使用1.9.4版本 a. File->Open Video File; b. Video->Filters->Add->Convert format; 選擇 4:2:0 Planar YCbCr (YV12)或者 32-Bit RGB。 c. Save as AVI. 儲存完畢。 (注:成功使用。)

大家可以測試一下。如果還是不行,請回複,共同讨論一下。