schwankende Werte bei Videoerstellung

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
Felix92
User
Beiträge: 133
Registriert: Mittwoch 7. November 2018, 17:57

Ok ich probiere es nochmal :)

Ich habe ein Video in welchem sich eine Person bewegt diese wird durch

Code: Alles auswählen

is_ok, track_window = cv2.meanShift(gmask, track_window, term_crit)
img2 = cv2.rectangle(frame, track_window, 255, 0)
getrackt wobei track_window das Fenster in dem Rechteck ist (dachte ich zumindest)
Allerdings scheint genau dort der Fehler zu liegen siehe Bilder(Fenster track_window):

Bild
Bild
Bild

Ich möchte nun den Inhalt aus dem Rechteck als extra Video speichern/schreiben einen festen Wert in der ROI kann ich nicht nutzen da das Rechteck ja von Frame zu Frame unterschiedlich positioniert ist und die Werte variieren. x, y, width, height = track_window liefert mir die richtigen Werte (vermutlich) wenn ich dann allerdings schreibe cv2.imshow('test', frame[x:x+width, y:y+height) bekomme ich nur einen Fehler:

Code: Alles auswählen

File "track_person.py", line 72, in main
    cv2.imshow('test', frame[x:x+width, y:y+height])
cv2.error: OpenCV(4.1.0) /io/opencv/modules/highgui/src/window.cpp:352: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'imshow'
(Das Rechteck geht nicht aus dem Frame)

Nun weiß ich nicht so recht wie ich dieses Problem lösen soll da ich absolut nicht verstehe weshalb das Rechteck korrekt angezeigt wird und ich es über die Werte

Code: Alles auswählen

x, y, width, height = 220, 400, 400, 650
track_window = (width,x,height,y)
auch verändern kann aber halt diesen Bereich nicht aus dem Frame schneiden kann.....meine Idee war aus

Code: Alles auswählen

img2 = cv2.rectangle(frame, track_window, 255, 0)
print(img2)
die x, y,width , height Werte des Rechtecks zu ermitteln um damit dann den Bereich abzugrenzen allerdings wird das Rechteck ja nur eingezeichnet und print(img2) liefert mir das numpy array des kompletten Frames.
Ich hoffe mein Problem ist jetzt etwas verständlicher und sry für den grauenvollen Testcode ^^
MfG Felix
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Matrizen werden frame[zeilen, spalten] referenziert.
Benutzeravatar
Felix92
User
Beiträge: 133
Registriert: Mittwoch 7. November 2018, 17:57

Kannst du vlt ein wenig genauer erklären wo mir das an der Stelle weiterhelfen soll ? :)
Danke
Benutzeravatar
Felix92
User
Beiträge: 133
Registriert: Mittwoch 7. November 2018, 17:57

Also ja ich könnte vermutlich das ganze img2 ablaufen jedes mal und nach den Pixeln des Rechtecks suchen aber das muss doch auch einfacher gehen
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Naja, Du hast Zeilen und Spalten vertauscht.
Benutzeravatar
Felix92
User
Beiträge: 133
Registriert: Mittwoch 7. November 2018, 17:57

Oh verdammt :/ vielen Dank einen ganzen Tag für nichts das passiert mir glaube nicht nochmal :D
Antworten