2016-04-09 7 views
2

Ich bin ein Anfänger in OpenCV und Python. Ich habe versucht, ein Video zu laden und Code Anzeige unten angegeben:Wie man ein Video in opencv (Python) lädt

import cv2 
cap = cv2.VideoCapture('G:\3d scanner\2.mmv') 
while(1): 
    _ , img2=cap.read() 
    cv2.namedWindow('video',cv2.WINDOW_NORMAL) 
    cv2.imshow('video',img2)    
    k=cv2.waitKey(1) & 0xFF 
    if k==27: 
     break 
cap.release() 
cv2.destroyAllWindows() 

Aber es wird folgenden Fehler zeigt:

OpenCV Error: Assertion failed (size.width>0 && size.height>0) in cv::imshow, file ..\..\..\..\opencv\modules\highgui\src\window.cpp, line 261 
File "test3.py", line 8, in <module> 
cv2.imshow('video',img2) 
cv2.error: ..\..\..\..\opencv\modules\highgui\src\window.cpp:261: error: (-215) size.width>0 && size.height>0 in function cv::imshow 

Es gibt vorherige Fragen auf dieser Seite zu diesem Thema, aber die Antworten gegeben wurden mit cv-Bibliothek, aber nicht cv2.

Irgendeine Idee von was ist falsch darin?

+0

Welche Version von OpenCV und Python verwenden Sie? – bastelflp

Antwort

0

Es gibt ein paar wichtige Unterschiede, wenn sie auf ein mit Videocapture Videodatei. Zunächst einmal gibt es keine integrierten Bildverzögerungen wie beim Aufnehmen von einer Webcam. Da die meisten Computer heutzutage sehr leistungsfähig sind, wird das Video im Handumdrehen angezeigt, es sei denn, Sie führen absichtlich eine Verzögerung zwischen den Bildern ein.

Zweitens hat das Video ein Ende im Gegensatz zu Eingabe von Ihrer Webcam, so dass Sie diesen Fall explizit behandeln müssen. Ich vermute, was passiert in Ihrem Fall ist, dass das Video in einer Angelegenheit von Millisekunden abgeschlossen ist, und dann die letzte cap.read() ist eine leere Matrix, die imshow() anschließend beschwert zurück.

Siehe Opening video with openCV +python. Eine der Antworten dort ist direkt auf Ihre Situation anwendbar.

0

versuchen, diese

cap = cv2.VideoCapture ('G:/3D Scanner/2.mmv')

Verwandte Themen