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