无法使用 VideoCapture 在 OpenCV+Python 中读取或播放视频

Posted

技术标签:

【中文标题】无法使用 VideoCapture 在 OpenCV+Python 中读取或播放视频【英文标题】:Can not Read or Play a Video in OpenCV+Python using VideoCapture 【发布时间】:2016-05-16 12:39:16 【问题描述】:
import cv2
import numpy as np

cap = cv2.VideoCapture('traffic.avi')

retval, frame = cap.read()

print retval

================ RESTART: J:\Python For DIP\traffic_video.py ================
False
>>> 

retval 的值始终为 False,表示该命令不读取视频。读取帧必须为 True。我不知道该怎么办。但是,当我使用我的默认网络摄像头时,它变成了 True。我尝试了很多视频,但出现了同样的问题。注意:我已经正确安装了ffmpeg。

注意:这不是完整的代码,在这一步中我只验证 cap.read() 是真还是假

【问题讨论】:

【参考方案1】:

查找 Python 的根目录可能有点棘手。我正在使用 Enthought 发行版,起初,我将 opencv_ffmpeg 文件粘贴到了错误的 Python 目录中。

错误:

C:\Users\USERNAME\AppData\Local\Programs\Python\Python35-32

右:

C:\Users\USERNAME\AppData\Local\Enthought\Canopy\User

长话短说,确保找到正确的 Python 目录。

【讨论】:

【参考方案2】:

这种方法100%保证

首先检查您的 OpenCV 版本,例如 2.4.11。您可以通过在 Python Shell 中键入以下命令来检查它:

>>> from cv2 import __version__
>>> __version__
'2.4.11'
>>> 

然后转到C:\opencv\build\x86\vc12\bin 并复制opencv_ffmpeg2411.dll。 最后进入 Python ex 的根目录:C:\Python27 并在其中粘贴opencv_ffmpeg2411.dll

查看文件opencv_ffmpeg2411.dll的名称,是否版本 opencv的是否写,如果没有,请执行以下操作 opencv_ffmpeg(不带点的opencv版本).dll

然后创建一个新的 Python 文件并复制此代码并粘贴它以加载您自己的视频

import numpy as np
import cv2

# Capture video from file
cap = cv2.VideoCapture('your video')

while True:

    ret, frame = cap.read()

    if ret == True:

        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

        cv2.imshow('frame',gray)


        if cv2.waitKey(30) & 0xFF == ord('q'):
            break

    else:
        break

cap.release()
cv2.destroyAllWindows()

您将有一个输出视频,例如: Result

【讨论】:

当其他一切都失败时,这对我有用! (我听了网上的一些建议,安装了 ffmpeg、gstreamer 和 Visual Studio 库,但都没有工作。)感谢您终于解决了我的问题。 Linux 怎么样?有没有类似的尝试?我发现的其他建议都没有奏效 谢谢。你有时间回答 WuerfelDev 的问题吗? 我尝试了很多,但没有任何效果。最后,我完全擦除了 Ubuntu 17.04 并安装了 Ubuntu 17.10。在新系统上安装后,它工作正常 它仍然没有解决使用 Python Notebooks 的问题。但我改用 PyCharm。

以上是关于无法使用 VideoCapture 在 OpenCV+Python 中读取或播放视频的主要内容,如果未能解决你的问题,请参考以下文章

Facecam 视频无法使用 cv2.VideoCapture() 打开并且无法读取

无法使用videoCapture opencv打开视频

无法使用 cv::VideoCapture 打开 .mp4

无法使用 OpenCV 从辅助网络摄像头读取 VideoCapture 中的帧

VideoCapture 在 Anaconda 中不起作用

OpenCV cv::Mat , imshow() , cv::VideoCapture 在运行时不工作