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

Python 2.7 python cv2.Videocapture()不起作用,cap.isOpened()返回false,python-2.7,opencv,Python 2.7,Opencv,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.

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()
它显示了这个错误

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

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

我不确定您是否正确写入了文件名。我从未见过像“car video.mp4”这样的文件目录。当您使用基于零的索引时,您的网络摄像头和cv2.VideoCapture工作正常;然而,VideoCapture无法读取像“car(space)video.mp4”这样的文件。工作代码是这样的

import numpy as np
import cv2

cap = cv2.VideoCapture('video.mp4')

while(cap.isOpened()):

    ret, frame = cap.read()

    if ret==True:

        cv2.imshow('frame',frame)

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

# Release everything if job is finished
cap.release()
cv2.destroyAllWindows()

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

试试看

pip install opencv-contrib-python

这对我来说很有效

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

要解决这个问题,

  • 我从我的conda环境中卸载了opencv(conda卸载opencv)
  • 使用conda forge频道安装了最新的ffmpeg(conda安装-c conda forge ffmpeg)

    名称版本生成通道

    ffmpeg 4.0.2 ha6a6e2b_0康达锻造

  • 然后使用conda forge频道再次安装opencv(conda安装-c conda forge opencv)

    名称版本生成通道

  • opencv 3.4.1 py36_blas_openblash829a850_201[blas_openblas]康达锻造厂


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

    首先,删除cap.open()调用;这是多余的。其次,检查视频是否与代码位于同一目录中。第三,删除文件名中的空格。请尝试car_video.mp4I更改文件名并移除cap.open()。但错误信息保持不变。双引号中的关闭文件名此链接对我帮助很大,并解决了我的问题。是的,很好,谢谢。起初,我没有复制ffmpeg编解码器文件。您能告诉我如何添加ffmpeg编解码器文件吗?将所有文件从*OpenCV\3rdparty\ffmpeg*复制到*C:\Python27*或路径中的目录。可能还需要重命名opencv_ffmpeg.dll文件。对于OpenCV版本X.Y.Z OpenCV_ffmpeg.dll==>OpenCV_ffmpegXYZ.dll对于64位OpenCV版本X.Y.Z OpenCV_ffmpeg.dll==>OpenCV_ffmpegXYZ_64.dli我使用OpenCV 3.0.0和win 32,所以像这样重命名文件OpenCV_ffmpeg300.dll检查构建信息:
    python-c“导入cv2;打印(cv2.getBuildInformation())”