2016-06-28 12 views
1

Ich sehe eine Webcam Kamera Live-Feed. Ich möchte dies in eine Tkinter-GUI integrieren und eine Dropdown-Auswahl haben, mit der man den Kamera-Index und damit die verwendete Webcam im laufenden Betrieb ändern kann. Wie kann dies erreicht werden?Python OpenCV - Update Kameraindex der Live-Webcam-Ansicht

Beispielcode:

import cv2 

def show_webcam(mirror=False): 
    cam = cv2.VideoCapture(0) 
    while True: 
     ret_val, img = cam.read() 
     if mirror: 
      img = cv2.flip(img, 1) 
     cv2.imshow('my webcam', img) 
     if cv2.waitKey(1) == 27: 
      break # esc to quit 
    cv2.destroyAllWindows() 

def main(): 
    show_webcam(mirror=True) 

if __name__ == '__main__': 
    main() 

Antwort

2

Zur Kamera zur Laufzeit alles, was Sie ändern müssen, ändern, ist der Index, den Sie in cv2.VideoCapture(index) passieren.

Finden Sie heraus, wie viele Kamera, die Sie für Ihre Anwendung verwenden und für 3 Kameras, können Sie es ändern Index auf 0 oder 1 oder 2

Fügen Sie ein mehr Parameter als Index show_webcam(mirror=True, index)

durch Ändern

in Funktion Seite können Sie diese verwenden

def show_webcam(mirror=False,index): cam = cv2.VideoCapture(index) while True: ret_val, img = cam.read() if mirror: img = cv2.flip(img, 1) cv2.imshow('my webcam', img) if cv2.waitKey(1) == 27: break # esc to quit cv2.destroyAllWindows()

+0

ich das zu schätzen muss getan werden - aber wie kann ich feststellen, das Programm zu beenden, die show_webcam() Funktion zu tun und neu initialisieren die ca Mera Ansicht unter einem anderen Index? – Samuel

+0

Ich habe das gleiche unter pyqt5 erstellt. Was ich tat war, ich erklärte Cam, um Self.cam irgendwo in der Klasse zugegriffen werden. Wenn ich das Drop-down-Menü ändere, um eine neue Kamera auszuwählen, sende ich den Drop-down-Index als Eingabe an die Funktion show_webcam. Ich benutze das On-Change-Ereignis der Drop-Down-Liste, um den neuen Drop-Down-Index zu übernehmen und an die Funktion show_webcam zu übergeben. –

+0

Das ändert die neue Kamera aber vorher habe ich die vorherige Kamera von self.cam.release() freigegeben. –