tkinter多摄像头监控场景下Label标签自动更新问题求助
问题修复方案
画面无法更新的核心原因是Frames_video()仅在应用初始化时执行一次,没有持续调度刷新。你之前尝试after方法不生效,通常是没有把递归调用逻辑写在Frames_video()内部。
修改步骤
- 调整
Frames_video()方法,增加读取成功判断,避免单路摄像头断开导致程序崩溃 - 在方法末尾通过
after实现循环调用,定时刷新所有摄像头画面
修改后的Frames_video()代码如下:
def Frames_video(self): for i in range(8): ret,frame=self.caps[i].read() if not ret: continue frame=cv2.resize(frame,(211,181)) img=cv2.cvtColor(frame,cv2.COLOR_BGR2RGB) img=Image.fromarray(img) img=ImageTk.PhotoImage(img) self.labels[i].configure(image=img) self.labels[i].image=img # 30为刷新间隔(毫秒),对应约33帧/秒,可根据需求调整 self.master.after(30, self.Frames_video)
替换原有代码中的对应方法即可实现多路摄像头实时预览。如果你需要调整画面流畅度,修改after方法的第一个参数数值即可,数值越小帧率越高,对设备性能要求也越高。
内容的提问来源于stack exchange,提问作者Daniel Babaian
相关产品推荐
相关产品推荐

