使用OpenCV VideoCapture发布打开的视频文件

时间:2017-05-01 04:39:14

标签: python opencv video ffmpeg

我一直在审查这个问题的大量类似问题,但我恐怕我无法弄清楚为什么我无法在opencv中打开文件

我有一个文件“small.avi”,这是我从互联网上获得的“small.mp4”的重新编码。我用ffmpeg -i small.mp4 small.avi重新编码了,我做了这个,因为我无法打开mp4文件,并且在网上建议先尝试avi格式。

这是我的代码(主要是从教程中复制而来,用几行来显示一些相关信息):

import cv2
import os

for _, __, files in os.walk("."):
    for file in files:
        print file
print ""

cap = cv2.VideoCapture("small.mp4")
print cap.isOpened()
print cap.open("small.avi")
i = 0
while cap.isOpened() and i < 10:
    i += 1
    ret, frame = cap.read()
    print "read a frame"
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    cv2.imshow('frame', gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

这会产生以下输出:

"A:\Program Files\AnacondaPY\Anaconda\python.exe" A:/Documents/Final/VideoProcessor.py
small.avi
small.mp4
VideoProcessor.py

False
False

Process finished with exit code 0

我的程序似乎没有正确打开任何一个文件。遵循

的建议

Can not Read or Play a Video in OpenCV+Python using VideoCapture

Cannot open ".mp4" video files using OpenCV 2.4.3, Python 2.7 in Windows 7 machine

我发现我的cv2版本为3.0.0,转到

A:\下载\的OpenCV \建立\ 86 \ VC12 \ BIN

并将文件opencv_ffmpeg300.dll复制到

A:\ Program Files \ AnacondaPY \ Anaconda

尽管如此,代码仍无法成功打开视频文件。我甚至尝试过x64版本,并尝试命名文件opencv_ffmpeg.dll,opencv_ffmpeg300.dll和opencv_ffmpeg300_64.dll(对于x64版本)。还有什么我可以尝试解决这个问题吗?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

如果您从menpo(或默认conda)频道下载opencv(使用'conda install --channel https://conda.anaconda.org/menpo opencv3' ),它可能无法正常工作,因为某些视频处理依赖项如ffmpeg不存在。

您需要从'conda-forge'频道下载opencv,其中包含用于视频处理的最新和附加软件包和依赖项。请尝试以下方法:

conda install -c conda-forge ffmpeg

conda install -c conda-forge opencv

这里-c告诉频道使用'conda-forge'。