天天看点

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. 保存完毕。 (注:成功使用。)

大家可以测试一下。如果还是不行,请回复,共同讨论一下。