如何使用带有OpenCV 2.4.6的Python 2.7.5在AVI容器中打开M-JPEG视频?

时间:2013-11-13 16:45:57

标签: python opencv video

我正在尝试使用Python(x,y)使用OpenCV打开* .avi文件,每次运行以下代码时,文件都无法打开。

import cv2
from cv2 import cv

# Set up
fn = "./video.avi"
v = cv2.VideoCapture()

# Configure codec:
# From ffprobe, codec is M-JPEG ==> MJPG;
codec = cv.CV_FOURCC("M", "J", "P", "G")
v.set(cv.CV_CAP_PROP_FOURCC, codec)

# Test
v.open(fn)

print fn
if not v.isOpened():
    print "Video failed to open"
else:
    print "Video opened!"

以下是正在运行的输出

ffprobe video.avi

输出:

libavutil      52. 52.100 / 52. 52.100
libavcodec     55. 41.100 / 55. 41.100
libavformat    55. 21.100 / 55. 21.100
libavdevice    55.  5.100 / 55.  5.100
libavfilter     3. 90.102 /  3. 90.102
libswscale      2.  5.101 /  2.  5.101
libswresample   0. 17.104 /  0. 17.104
libpostproc    52.  3.100 / 52.  3.100
Input #0, avi, from 'L4R01CA_T05032300.avi':
  Duration: 00:00:06.01, start: 0.000000, bitrate: 16136 kb/s
    Stream #0:0: Video: mjpeg (MJPG / 0x47504A4D), yuvj420p(pc), 720x480, 29.97 tbr, 29.97 tbn, 29.97 tbc
    Stream #0:1: Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, stereo, fltp, 256 kb/s

任何人都有任何想法为什么OpenCV无法打开此文件?我也尝试打开文件而不将cv.CV_CAP_PROP_FOURCC设置为MJPG,结果相同。

谢谢。

1 个答案:

答案 0 :(得分:1)

不需要设置FourCC。只需使用

即可
c = VideoCapture(fn)

最可能的原因导致它不起作用:

  1. 您没有安装正确的编解码器(尝试安装编解码器包)。
  2. 确保视频文件位于正确的位置。
  3. 确保您拥有正确的opencv_ffmpeg_xx.dll,程序可以找到它。