2017-02-13 31 views
5

cv2.Videocapture() działa dobrze podczas korzystania z kamery internetowej, ale podczas próby odczytu z dysku twardego pokazuje błąd cap.isOpened() zwraca fałszpython cv2.Videocapture() nie działa, cap.isOpened() zwraca fałsz

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() 

To pokazuje ten błąd

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

mój OpenCV wersja 3.0.0, Python 2.7, Windows 10 32 bit

+0

Po pierwsze, usunąć cap.open() zadzwonić; jest zbędny. Po drugie sprawdź, czy Twój film wideo znajduje się w tym samym katalogu co twój kod. Po trzecie, usuń spację w nazwie pliku. Wypróbuj car_video.mp4 –

+0

Zmieniam nazwę pliku i usuwam cap.open(). ale komunikat o błędzie pozostaje ten sam –

+0

załączyć nazwę pliku w podwójnych cudzysłowach –

Odpowiedz

1

nie jestem pewien, że są poprawnie pisać nazwy pliku. Nigdy nie widziałem katalogu z plikami, takiego jak "car video.mp4". Gdy korzystasz z indeksu opartego na zera, twoja kamera internetowa i cv2.VideoCapture działają dobrze; jednak VideoCapture nie może odczytać pliku takiego jak 'car (space) video.mp4' Działający kod jest podobny do tego;

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() 
3

trzeba ffmpeg kodeka można uruchomić wideo

+0

Tak, dziękuję. Na początku nie skopiowałem pliku z kodekiem ffmpeg –

+2

czy mógłbyś mi powiedzieć, jak dodać plik kodeka ffmpeg? –

+1

Skopiuj cały plik z pliku ** OpenCV \ 3rdparty \ ffmpeg \ ** do ** C: \ Python27 \ ** lub do katalogu, który znajduje się w zmiennej PATH. Konieczne może być również zmienienie nazwy pliku opencv_ffmpeg.dll. Dla OpenCV wersji XYZ opencv_ffmpeg.dll ==> opencv_ffmpegXYZ.dll Dla 64-bitowej wersji OpenCV XYZ opencv_ffmpeg.dll ==> opencv_ffmpegXYZ_64.dll –