Search code examples
pythonopencvwebcam

Python OpenCV - Update camera index of live webcam view


I am viewing a webcam camera live feed. I would like to incorporate this into a Tkinter GUI and have a dropdown selection that allows one to change the camera index, and therefore the webcam being used, on the fly. How can this be achieved?

Example code:

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

Solution

  • To change camera at run time all you need to change is the index you pass in cv2.VideoCapture(index).

    Find out how many camera you will be using for your app and for 3 cameras, you can change it through changing index to 0 or 1 or 2.

    Add one more parameter as index show_webcam(mirror=True, index)

    in function side you can use this

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