我在程序中使用OpenCV,Python,Tkinter和PiCamera时遇到问题。
Tkinter窗口用于显示和设置要在OpenCV中使用的值:
我正在尝试从我目前正在使用的PiCamera连续读取和处理视频供稿:
while True:
for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):
root.update_idletasks()
但是在互联网上阅读一番之后,我发现不建议使用update()
,所以我尝试了运气以了解线程,但是失败了。 VideoCapture()
有很多示例,这些示例用于USB相机,但没有很多用于PiCamera。除了穿线还有其他方法吗?
答案 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()