使用tkinter无递归方法显示opencv视频
我已经做了实时人脸检测系统,但我需要为程序添加gui。而不是使用来自的解决方案。我不想以递归的方式读取帧使用tkinter无递归方法显示opencv视频,opencv,tkinter,Opencv,Tkinter,我已经做了实时人脸检测系统,但我需要为程序添加gui。而不是使用来自的解决方案。我不想以递归的方式读取帧 def show_frame(): _,frame = cap.read() ... #skip lmain.after(10,show_frame) 在我以前的代码中,它需要大量重构。所以,我更喜欢以while循环的方式阅读框架。但它不起作用。谢谢你的帮助 import numpy as np import cv2 import tkinter as tk f
def show_frame():
_,frame = cap.read()
... #skip
lmain.after(10,show_frame)
在我以前的代码中,它需要大量重构。所以,我更喜欢以while循环的方式阅读框架。但它不起作用。谢谢你的帮助
import numpy as np
import cv2
import tkinter as tk
from PIL import Image, ImageTk
window = tk.Tk()
window.wm_title("Test")
imageFrame = tk.Frame(window, width=600, height=500)
imageFrame.grid(row=0, column=0, padx=10, pady=2)
#Capture video frames
lmain = tk.Label(imageFrame)
lmain.grid(row=0, column=0)
cap = cv2.VideoCapture(0)
def show_frame(frame):
frame = cv2.flip(frame, 1)
cv2image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGBA)
img = Image.fromarray(cv2image)
imgtk = ImageTk.PhotoImage(image=img)
lmain.imgtk = imgtk
lmain.configure(image=imgtk)
# lmain.after(10, show_frame)
while True:
_,frame = cap.read()
show_frame(frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
window.mainloop()
之后
不是递归,它只是将同一个函数安排在以后调度,结束后可能会对此有所了解,我建议也对该主题做一些后续研究。您现在的主要问题似乎是缺乏对GUI操作和编程基本原则的理解。这会导致您由于误解而放弃合法的解决方案,并试图将其强加给常规的命令行应用程序模型e、 g.cv2.waitKey
不在这里,如果您想要键盘事件。