首页 > 解决方案 > 为什么 GUI 卡住并且后台进程运行完美?

问题描述

我写了一个这样的程序:

cap = cv2.VideoCapture(video_path)
counter = 1
while True:
    ret, frame = cap.read()
    if not ret: break
    cv2.imwrite(...)
    self.progressbar.setValue(int((counter / self.totalFrame)*100))
    time.sleep(1)
    counter += 1

self.progressbar.setValue(0)
cap.release()

我想使用 opencv 从视频中提取所有帧,并希望在 PyQt5 进度条中显示进度。我还使用 sleep 来避免 Not Responding。但是程序显示我没有响应,进度条也被后台工作卡住了。

如何正确显示进度条的进度?

self.totalFrame 是视频的帧数。

进度条在 5 或 6 % 的进度后卡住 进度条在 5 或 6 % 的进度后卡住 但所有帧都成功 提取但是所有帧都被成功提取

标签: python-3.xopencvpyqt5

解决方案


尝试用 cv2.waitKey(1) 替换 time.sleep(1)


推荐阅读