我创建了一个类 Tela,它基本上是我的屏幕,我正在尝试在 Tkinter GUI 上显示网络摄像头视频。我的网络摄像头 LED 亮起,但我想要显示我的视频的标签“painel”是灰色的。有人能告诉我我的代码有什么问题吗?我很欣赏。
class Tela:
def __init__(self, janela):
self.janela = janela
self.janela.title("Reconhecimento Facial")
self.janela.config(background="#FFFFFF")
# Open camera
self.cam = cv2.VideoCapture(0)
self.detector = dlib.get_frontal_face_detector()
self.quadro = tkinter.Frame(janela, width=600, height=500)
self.quadro.grid(row=0, column=0, padx=10, pady=2, rowspan=3)
self.painel = tkinter.Label(self.quadro)
self.quadro.grid(row=0, column=0, rowspan=3)
# Methods for screen update
self.delay = 15
self.update()
self.janela.mainloop()
def update(self):
# Get frame
ret, frame = self.cam.read()
faces, confianca, idx = self.detector.run(frame)
for i, face in enumerate(faces):
e, t, d, b = (int(face.left()), int(face.top()), int(face.right()), int(face.bottom()))
cv2.rectangle(frame, (e, t), (d, b), (0, 255, 255), 2)
cv2image = cv2.cvtColor(self.frame, cv2.COLOR_BGR2RGBA)
image = Image.fromarray(cv2image)
imgtk = ImageTk.PhotoImage(image=image)
self.painel.imgtk = imgtk
self.painel.configure(image=imgtk)
self.janela.after(self.delay, self.update)
# Creates the window
Tela(tkinter.Tk())
错误在第二行
self.painel = tkinter.Label(self.quadro)
self.quadro.grid(row=0, column=0, rowspan=3)
你创建了Label
但你没有把它放在窗口中 - 它必须是self.painel.grid
而不是self.quadro.grid
self.painel = tkinter.Label(self.quadro)
self.painel.grid(row=0, column=0, rowspan=3)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句