【问题标题】:How to open an M-JPEG video in an AVI container using Python 2.7.5 with OpenCV 2.4.6?如何使用 Python 2.7.5 和 OpenCV 2.4.6 在 AVI 容器中打开 M-JPEG 视频?
【发布时间】:2013-11-13 16:45:57
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: python opencv video


    【解决方案1】:

    无需设置 FourCC。使用就够了

    c = VideoCapture(fn)
    

    无法正常工作的最可能原因:

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

    【讨论】:

    • 我的 Python27/Lib/site-packages 文件夹中有 opencv_ffmpeg246.dll,我已经仔细检查了文件路径的格式和位置。你知道我可以通过什么方式获得较低级别的错误消息吗?比如,我想在低于 Python 解释器的级别上调试这个错误。
    • 我不确定你是否可以从 python 中做到这一点,但如果你设置了一个 C++ 项目,你实际上可以调试 opencv 代码。
    猜你喜欢
    • 1970-01-01
    • 2012-05-08
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    • 2014-10-02
    • 2017-10-19
    • 2012-11-27
    • 1970-01-01
    相关资源
    最近更新 更多