结合OpenCV,Python,Tkinter和PiCamera

时间:2019-01-31 17:59:25

标签: python opencv tkinter

我在程序中使用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 :(得分:0)

您可以使用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()