2016-06-28 2 views
1

Я просматриваю веб-камеру в реальном времени. Я хотел бы включить это в графический интерфейс Tkinter и иметь раскрывающийся список, который позволяет изменять индекс камеры, и, следовательно, веб-камеру, которая используется, на лету. Как это можно достичь?Python OpenCV - Обновить индекс камеры в реальном времени веб-камеры

Пример кода:

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

ответ

2

Для изменения камеры во время выполнения все, что вы должны изменить это индекс вы передаете в cv2.VideoCapture(index).

Узнайте, сколько камеры вы будете использовать для вашего приложения и для 3-х камер, вы можете изменить его с помощью изменения индекса 0 или 1 или 2.

Добавить еще один параметр, как индекс show_webcam(mirror=True, index)

в стороне функции вы можете использовать этот

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

Я понимаю, что нужно будет сделать - но как я могу сказать программе, чтобы прекратить делать функцию show_webcam() и инициализировать ча mera смотреть под другим индексом? – Samuel

+0

Я создал то же самое под pyqt5. Я сделал это, я объявил камеру, чтобы быть self.cam доступным в любом месте класса. поэтому, когда я изменяю раскрывающийся список, чтобы выбрать новую камеру, я отправляю индекс вниз в качестве входа в функцию show_webcam. Я использую событие on change в раскрывающемся списке, чтобы вывести новый индекс и передать его функции show_webcam. –

+0

Это изменяет новую камеру, но до этого я выпустил предыдущую камеру self.cam.release(). –

Смежные вопросы