python cv2.Videocapture()不起作用,cap.isOpened()返回false

Joy*_*der 7 opencv python-2.7

cv2.Videocapture()在使用网络摄像头时工作正常但在尝试从硬盘驱动器读取时显示错误cap.isOpened()返回false

import cv2
import numpy as np
background=cv2.imread('background.png')
cap = cv2.VideoCapture('car video.mp4')
cap.open('car video.mp4')
print cap.isOpened()
while 1:
    ret,img=cap.read()
    cv2.imshow('a',img)
    print img.shape


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

cap.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

它显示了这个错误

    cv2.imshow('a',img)
    error: ..\..\..\..\opencv\modules\highgui\src\window.cpp:266: error:       (-215)        size.width>0 && size.height>0 in function cv::imshow
Run Code Online (Sandbox Code Playgroud)

我的opencv版本3.0.0,python 2.7,windows10 32位

Moh*_*ney 8

您需要 ffmpeg 编解码器才能阅读视频。

  • 你能告诉我如何添加ffmpeg编解码器文件吗? (3认同)
  • 将所有文件从 **OpenCV\3rdparty\ffmpeg\** 复制到 **C:\Python27\** 或 PATH 中的目录。可能还需要重命名 opencv_ffmpeg.dll 文件。对于 OpenCV 版本 XYZ opencv_ffmpeg.dll ==> opencv_ffmpegXYZ.dll 对于 64 位 OpenCV 版本 XYZ opencv_ffmpeg.dll ==> opencv_ffmpegXYZ_64.dll (2认同)

小智 5

尝试

pip install opencv-contrib-python
Run Code Online (Sandbox Code Playgroud)

它对我有用


use*_*416 5

在 anaconda3 虚拟环境中使用 opencv 时遇到了同样的错误。我检查了当前 opencv 版本的构建信息,ffmpeg 被标记为"no"

为了解决这个

  1. 我从我的 conda 环境中卸载了 opencv (conda uninstall opencv)
  2. 使用 conda-forge 通道安装最新的 ffmpeg (conda install -c conda-forge ffmpeg)

    名称版本构建频道

    ffmpeg 4.0.2 ha6a6e2b_0 conda-forge

  3. 然后使用 conda-forge 通道再次安装 opencv (conda install -c conda-forge opencv)

    名称版本构建频道

opencv 3.4.1 py36_blas_openblash829a850_201 [blas_openblas] conda-forge

执行此操作后重新启动 python 控制台并导入 cv2。

  • 要检查构建信息:`python -c "import cv2; print(cv2.getBuildInformation())"` (2认同)