ich hab nach ein paar Tests und Durchläufen gemerkt, dass die Liveübertragung meiner IP Kamera nicht wirklich live ist.
Also wenn ich das richtige sehe hat die IP-Kamera eine bestimmte Anzahl von Bilder die das Pythonscript auch auf nimmt nur eben schön sauber alle nach einander anzeigt.
Wenn ich jetzt aber deutlicher weniger Bilder pro Sekunde bei mir Anzeige wird der Versatz des Bildes immer größer.
Ich hatte jetzt versucht die Buffersize mit 1 anzugeben aber da hat sich nichts verändert. Ein paar Sachen hab ich online schon gelesen hab die aber ehrlich gesagt nicht verstanden.
Hab ihr eine Idee was ich noch machen kann? kann ich den Buffer einfach leeren? oder ihm einfach sagen gibt mir immer das neuste Bild und nicht das älteste?
E
Code: Alles auswählen
def init(top, gui, *args, **kwargs):
global w, top_level, root, cap
w = gui
top_level = top
root = top
root.protocol("WM_DELETE_WINDOW", destroy_window)
root.state("zoomed")
cap = cv2.VideoCapture(Kamera_ID)
cap.set(cv2.CAP_PROP_BUFFERSIZE,1)# Hier hat sich nichts geändert, was auffällt ist, dass die beiden folgenden Befehle auch überhaupt keine Auswirkung haben
cap.set(cv2.CAP_PROP_FRAME_WIDTH, width)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, height)
label_cam = tk.Label(top) #erstellt ein neues Label im Toplevel
label_cam.pack()
def show_frame():
_,frame = cap.read() #
frame = cv2.resize(frame,(width*1, height*1))#,interpolation=cv2.INTER_CUBIC) #hier nochma neuskalieren weil er es oben nicht richtig macht
hsv= cv2.cvtColor(frame ,cv2.COLOR_BGR2RGB)
img = Image.fromarray(hsv) #
imgtk = ImageTk.PhotoImage(image = img) #
label_cam.imgtk = imgtk #
label_cam.configure(image=imgtk) #
root.after(50,show_frame)
show_frame()