web-dev-qa-db-fra.com

python cv2.Videocapture () ne fonctionne pas, cap.isOpened () renvoie false

cv2.Videocapture () fonctionne correctement lors de l'utilisation de la webcam, mais en essayant de lire à partir du disque dur, il indique l'erreur cap.isOpened () renvoie 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()

Il montre cette erreur

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

mon opencv version 3.0.0, python 2.7, windows10 32 bits 

5
Joy Mazumder

vous avez besoin du codec ffmpeg pour pouvoir exécuter la vidéo

4
Mohammed Awney

Je ne suis pas sûr que vous écrivez votre nom de fichier correctement. Je n'ai jamais vu de répertoire de fichiers tel que 'car video.mp4' . Lorsque vous utilisez l’indice de base zéro, votre webcam et cv2.VideoCapture fonctionnent correctement. Cependant, VideoCapture ne peut pas lire un fichier tel que 'car (space) video.mp4' Un code de travail ressemble à quelque chose comme ceci;

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()
1
Black Eagle

Je recevais la même erreur lors de l'utilisation d'opencv dans un environnement virtuel anaconda3. J'ai vérifié les informations de compilation pour la version actuelle d’opencv et ffmpeg était marqué "non"

Pour résoudre ce problème

  1. J'ai désinstallé opencv de mon environnement conda (désinstaller opencv)
  2. Dernière version de ffmpeg installée à l'aide du canal conda-forge (conda install -c conda-forge ffmpeg)

    Nom Version Build Channel

    ffmpeg 4.0.2 ha6a6e2b_0 conda-forge

  3. Puis installé à nouveau en utilisant le canal conda-forge (conda install -c conda-forge opencv)

    Nom Version Build Channel

ouverture 3.4.1 py36_blas_openblash829a850_201 [blas_openblas] conda-forge

Redémarrez la console python après l'avoir fait et importez cv2.

1
user7199416

essayer

pip install opencv-contrib-python

Ça a fonctionné pour moi

0
L.xp