2017-06-24 18 views
-2

Ich habe ein Problem mit dem Programm in Python mit OpenCV geschrieben. Ich benutze Xubuntu (16.04), Python 3.6.Python OpenCV: Assertion fehlgeschlagen

Dies ist mein Code:

import cv2 
import numpy as np 

if __name__ == "__main__": 
    cap = cv2.VideoCapture('movie.mp4') 

    key = ord('a') 

    while key != ord('q'): 
     # Capture frame by frame 
     ret, frame = cap.read() 
     # Display the result of our processing 
     cv2.imshow('result', frame) 
     # Wait a little (30 ms) for a key press - this is required 
     # to refresh the image in our window 
     key = cv2.waitKey(30) 


    # When everytihnd done, releas the captyur and destroy created windows 
    cap.release() 
    cv2.destroyAllWindows 

und das ist Fehler, die ich erhielt:

/home/xubuntu/anaconda3/bin/python "/home/xubuntu/PycharmProjects/untitled/lab1/zad7 wideo v2.py" 
OpenCV Error: Assertion failed (size.width>0 && size.height>0) in imshow, file /home/travis/miniconda/conda-bld/conda_1486587069159/work/opencv-3.1.0/modules/highgui/src/window.cpp, line 281 
Traceback (most recent call last): 
    File "/home/xubuntu/PycharmProjects/untitled/lab1/zad7 wideo v2.py", line 13, in <module> 
    cv2.imshow('result', frame) 
cv2.error: /home/travis/miniconda/conda-bld/conda_1486587069159/work/opencv-3.1.0/modules/highgui/src/window.cpp:281: error: (-215) size.width>0 && size.height>0 in function imshow 


Process finished with exit code 1 

zu übernehmen ich hinzufügen möchte, dass der gleiche Code unter Windows funktioniert. Könnten Sie mir bitte helfen?

+0

Der Rahmen ist hier leer: 'cv2.imshow ('Ergebnis', Rahmen)' – ZdaR

+0

Nun, der Rahmen scheint ein 0x0 Rahmen zu sein (also kein Inhalt). –

+0

Das ist die Sache, die ich jetzt wirklich habe. Unter Linux funktioniert es nicht, aber unter Windows funktioniert es. Ich habe versucht, Berechtigungen für diese Datei zu ändern, aber es hat nicht funktioniert – fafal

Antwort

0

cap.read() gibt 2 Werte zurück: Die zweite, wie Sie wissen, ist das Bild als ein numpy Array. Der erste ist ein bool Wert , der anzeigt, ob Sie das Ende des Videos erreicht haben oder nicht.

Sie müssen den Rückgabewert testen, bevor Sie in die nächste Iteration gehen, wie folgt aus:

while key != ord('q'): 
    ret, frame = cap.read() 
    if not ret: 
     break 

    cv2.imshow('result', frame) 
    key = cv2.waitKey(30) 

Wenn die über das Video, cap.read() kehrt (False, <empty array>). Stellen Sie also sicher, dass der Rückgabewert zuerst getestet wird.

+0

Okay, wahrscheinlich App nicht laden Video, aber warum? Ich habe versucht, Erlaubnis zu ändern, hat nicht gearbeitet. – fafal

+0

@fafal Was meinst du? Es wirft immer noch Fehler? Dann schau, ob du dein py-Skript +777 chmod kannst. –

Verwandte Themen