【发布时间】:2020-04-28 18:39:50
【问题描述】:
我是 python 新手,我正在尝试学习 openCV,所以为了查看和分析视频上的帧,我想使用 tkinter 制作一个简单的 GUI 界面来控制视频的基本控制,例如播放、暂停分步循环,我在下面的代码中的问题是当我点击播放时,一切都被进程阻止了,我不再能够点击暂停或任何按钮,请任何关于如何实现它来运行它的建议异步。
from tkinter import *
import cv2
def play():
cap = cv2.VideoCapture('480.m4v')
while cap.isOpened():
ret, frame1 = cap.read()
cv2.imshow("feed", frame1)
if cv2.waitKey(33) == 27:
break
cv2.destroyAllWindows()
cap.release()
def pause():
print(var1.get())
def step():
print(var1.get())
root = Tk()
root.title('GUI Control')
root.geometry('700x400')
# Play Button
play_btn = Button(root, text="Play", width=12, command=play)
play_btn.grid(row=0, column=0, padx=20, pady=20)
# Pause Button
pause_btn = Button(root, text="Pause", width=12, command=pause)
pause_btn.grid(row=0, column=1, pady=20, padx=20)
# Step Button
pause_btn = Button(root, text="Step", width=12, command=step)
pause_btn.grid(row=0, column=2, padx=20, pady=20)
var1 = IntVar()
Checkbutton(root, text="Loop Playing", variable=var1).grid(
row=1, column=0, sticky=W, padx=20)
root.mainloop()
【问题讨论】:
标签: python-3.x opencv asynchronous tkinter