出现了一个关于OpenCV的Tk窗口视频流人脸识别保存问题

设计了一个关于OpenCV的Tk窗口视频流人脸识别,并且截图保存到文件夹,但是在保存完成后窗口卡死。希望大家能帮我看看,只要截图完成后窗口可以继续视频框选识别人脸就可以,万分感谢!
 def video_loop(self, panela):                   #常规的窗口
        
           
        success, img = self.camera.read(0)  # 从摄像头读取照片
        if success:
            faces = faceCascade.detectMultiScale(img, 
                scaleFactor=1.5,
                minNeighbors = 5,
                minSize=(32,32)
            )


            for (x, y, w, h) in faces:
                face = img[y:y + h, x:x + w] 
                eyes = eyesCascade.detectMultiScale(img, 1.1, 5)

                #eye
                for (x2, y2, w2, h2) in eyes:
                    cv2.putText(img, 'eyes', (x2 - 2, y2 - 2),
                        cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0))
                    cv2.rectangle(img, (x2, y2), (x2 + w2, y2 + h2), (0, 0, 255), 2)
            
                # face
                for (x,y,w,h) in faces:
                    
                    cv2.putText(img, 'face', (x - 2, y - 2),
                        cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0))
                    cv2.rectangle(img, (x, y), (x + w, y + h), (255, 255, 0), 2)



            cv2image = cv2.cvtColor(img, cv2.COLOR_BGR2RGBA)  # 转换颜色从BGR到RGBA

            current_image = Image.fromarray(cv2image)  # 将图像转换成Image对象
            imgtk = ImageTk.PhotoImage(image=current_image)
            panela.imgtk = imgtk
            panela.config(image=imgtk)
            self.root.after(1, lambda: self.video_loop(panela))

def saveImage(self):                        #second页面记录
        if not os.path.exists('FaceData'):   # 创建文件夹
            os.mkdir('FaceData')
        headers = {1}

        cap = cv2.VideoCapture(0,cv2.CAP_DSHOW) 
        ok = True

        face_count = 0
        while ok:
            try:
                ok, img = cap.read()
                gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
                key = cv2.waitKey(100)
                faces = faceCascade.detectMultiScale(gray)
                result = [] 
                for (x, y, w, h) in faces:

                    face_gray = gray[y:(y+h), x:(x+w)]
                if face_count < 100:
                    cv2.imwrite('FaceData/lxr.' + str(face_count) + '.jpg', face_gray)
                    face_count += 1

                if face_count > 100:
                    for (x, y, w, h) in faces:
                        face = img[y:y + h, x:x + w] 
                        eyes = eyesCascade.detectMultiScale(img, 1.1, 5)

                #eye
                    for (x2, y2, w2, h2) in eyes:
                        cv2.putText(img, 'eyes', (x2 - 2, y2 - 2),
                        cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0))
                        cv2.rectangle(img, (x2, y2), (x2 + w2, y2 + h2), (0, 0, 255), 2)
                # face
                    for (x,y,w,h) in faces:
                        cv2.putText(img, 'face', (x - 2, y - 2),
                        cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0))
                        cv2.rectangle(img, (x, y), (x + w, y + h), (255, 255, 0), 2)

                    k = cv2.waitKey(1)
                    if k == 27:
                        break
            except Exception as e:
          

暂时能想到是在截图到100张的时候重新开启显示
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^