2

我正在尝试使用 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 的情况下打开文件,结果相同。

谢谢你。

4

1 回答 1

1

无需设置 FourCC。只需使用就足够了

c = VideoCapture(fn)

最可能的原因为什么它不起作用:

  1. 您没有安装正确的编解码器(尝试安装编解码器包)。
  2. 确保视频文件位于正确的位置。
  3. 确保你有正确的 opencv_ffmpeg_xx.dll 并且程序可以找到它。
于 2013-11-14T12:53:02.647 回答