Объединение OpenCV, Python, Tkinter и PiCamera - PullRequest
0 голосов
/ 31 января 2019

У меня проблемы с использованием OpenCV, Python, Tkinter и PiCamera в программе.

  • Окно Tkinter используется для отображения и установки значений, которые будут использоваться в OpenCV:

    TkinterWindow

  • Я пытаюсь непрерывно читать и обрабатывать видеопоток с PiCamera, который я сейчас использую:

    while True:
        for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):
            root.update_idletasks()
    

Но после некоторого чтения в интернете я обнаружил, что использование update() нецелесообразно, поэтому я попытался попытаться понять многопоточность, но потерпел неудачу.Есть много примеров с VideoCapture(), который используется с USB-камерами, но не так много с PiCamera.Есть ли другой способ, кроме многопоточности?

1 Ответ

0 голосов
/ 01 февраля 2019

Вы можете использовать root.after(...).Ниже приведен пример кода:

# define a variable used to stop the image capture
do_image_capture = True

def capture_image():
    if do_image_capture:
        camera.capture(rawCapture, format='bgr', use_video_port=True)
        # do whatever you want on the captured data
        ...
        root.after(100, capture_image) # adjust the first argument to suit your case

capture_image()

Ниже приведен пример кода с использованием потока:

import threading

stop_image_capture = False

def capture_image():
    for frame in camera.capture_continuous(rawCapture, format='bgr', use_video_port=True)
        # do whatever you want on the capture image
        ....
        if stop_image_capture:
            break

t = threading.Thread(target=capture_image)
t.setDaemon(True)
t.start()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...