openCV (-215:Assertion failed)
Verfasst: Freitag 23. April 2021, 16:32
Hallo Zusammen,
ich habe hier ein Problem, was mir echt Kopfzerbrechen bereitet:
cv2.error: OpenCV(4.5.1) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-wvn_it83\opencv\modules\highgui\src\window.cpp:376: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'
Natürlich habe ich mich schon umfangreich schlau gemacht, wo der Fehler liegt. Es hat definitiv mit meinem Pfad zu tun...aber hier wird es irgendwie strange (natürlich kann ich zu 100% ausschließen, dass ein Fehler im Pfad selbst liegt) Selbstverständlich gibt es die Videodatei auch und sie ist auch nicht korrupt.
Folgende Funktion habe ich geschrieben, um den Fehler einzugrenzen:
Nun kommt der im Logfile angemerkte Pfad, den ich als r"..." gespeichert habe (um Unicode Problematik auszuschließen). Hier speichere ich mehrere Varianten, mal mit \\, dann als / und dann über os.path.join.:
Merkwürdig ist aber, dass nur die Variante z (das Videofile liegt auf dem Desktop, das Python Skript ebenfalls) funktioniert. Das Problem liegt also im Pfad:
L:\Cam15-MP4\frame_store\100\Video1\complete
Nun habe ich sowohl den Pfad wie auch die Datei folgendermaßen geprüft:
Sowohl der Pfad gibt True zurück (Aber nur mit r"...") und das File existiert ebenfalls.
Nun meine Frage, wo liegt der Fehler? Das Video gibt es, der Pfad ist korrekt (er ist ultra lang, aber das ist leider auf dem Server so). Ich kann das File auch über die Funktion Playout() anspielen, ABER NUR wenn ich die Variante auf dem Desktop benutze.
Ich hab auch noch andere Pfade, die ich der Funktion übergebe, die relativ ähnlich sind und die funktionieren problemlos! Das ist wichtig, die Logik funktioniert bei einigen Fällen ganz genau so, wie ich es geschrieben habe. Nur in diesem Testfall, den ich versuche zu verstehen, kommt der o.g. openCV Traceback...wenn ich den gesamten Pfad angebe.
Ich würde mich tierisch freuen, wenn ihr mir hier weiterhelfen könnt, weil es das letzte Problem ist, was es für mich zu lösen gilt.
Über jeden Hinweis bin ich echt dankbar.
Viele Grüße,
Marc
ich habe hier ein Problem, was mir echt Kopfzerbrechen bereitet:
cv2.error: OpenCV(4.5.1) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-wvn_it83\opencv\modules\highgui\src\window.cpp:376: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'
Natürlich habe ich mich schon umfangreich schlau gemacht, wo der Fehler liegt. Es hat definitiv mit meinem Pfad zu tun...aber hier wird es irgendwie strange (natürlich kann ich zu 100% ausschließen, dass ein Fehler im Pfad selbst liegt) Selbstverständlich gibt es die Videodatei auch und sie ist auch nicht korrupt.
Folgende Funktion habe ich geschrieben, um den Fehler einzugrenzen:
Code: Alles auswählen
def playout(path):
cap = cv2.VideoCapture(path)
cap.set(cv2.CAP_PROP_POS_FRAMES,0)
while(True):
# Capture frame-by-frame
ret, frame = cap.read()
print(ret)
print(frame)
# Display the resulting frame
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
#sleep(3.5)
Code: Alles auswählen
x = r"L:\Cam15-MP4\frame_store\100\Video1\complete\video.100.1599549930306.unk.Video1.1618456766.1618457369873.1619177086780.1456675434085540.1456675434085540.1618457375872.1619180686860.1456675758085540.1456675758085540.3600.mp4"
y = r"L:/Cam15-MP4/frame_store/100/Video1/complete/video.100.1599549930306.unk.Video1.1618456766.1618457369873.1619177086780.1456675434085540.1456675434085540.1618457375872.1619180686860.1456675758085540.1456675758085540.3600.mp4"
b = r"L:\\Cam15-MP4\\frame_store\\100\\Video1\\complete\\video.100.1599549930306.unk.Video1.1618456766.1618457369873.1619177086780.1456675434085540.1456675434085540.1618457375872.1619180686860.1456675758085540.1456675758085540.3600.mp4"
z= r"video.100.1599549930306.unk.Video1.1618456766.1618457369873.1619177086780.1456675434085540.1456675434085540.1618457375872.1619180686860.1456675758085540.1456675758085540.3600.mp4"
w = x + z
path_a = r"L:\Cam15-MP4\frame_store\100\Video1\complete"
wave = Path(r"L:\Cam15-MP4\frame_store\100\Video1\complete", "video.100.1599549930306.unk.Video1.1618456766.1618457369873.1619177086780.1456675434085540.1456675434085540.1618457375872.1619180686860.1456675758085540.1456675758085540.3600.mp4")
path = os.path.join(path_a, z)
s = os.path.join(x)
L:\Cam15-MP4\frame_store\100\Video1\complete
Nun habe ich sowohl den Pfad wie auch die Datei folgendermaßen geprüft:
Code: Alles auswählen
playout(s)
if os.path.exists(r"L:\Cam15-MP4\frame_store\100\Video1\complete"):
# Does only exists as raw string formatting
print("path exist")
else:
print("path does not exist")
if os.path.isfile(r"L:\Cam15-MP4\frame_store\100\Video1\complete\video.100.1599549930306.unk.Video1.1618456766.1618457369873.1619177086780.1456675434085540.1456675434085540.1618457375872.1619180686860.1456675758085540.1456675758085540.3600.mp4"):
# File exists!
print("file exist")
else:
print("file does not exists")
Nun meine Frage, wo liegt der Fehler? Das Video gibt es, der Pfad ist korrekt (er ist ultra lang, aber das ist leider auf dem Server so). Ich kann das File auch über die Funktion Playout() anspielen, ABER NUR wenn ich die Variante auf dem Desktop benutze.
Ich hab auch noch andere Pfade, die ich der Funktion übergebe, die relativ ähnlich sind und die funktionieren problemlos! Das ist wichtig, die Logik funktioniert bei einigen Fällen ganz genau so, wie ich es geschrieben habe. Nur in diesem Testfall, den ich versuche zu verstehen, kommt der o.g. openCV Traceback...wenn ich den gesamten Pfad angebe.
Ich würde mich tierisch freuen, wenn ihr mir hier weiterhelfen könnt, weil es das letzte Problem ist, was es für mich zu lösen gilt.
Über jeden Hinweis bin ich echt dankbar.
Viele Grüße,
Marc