import threading import cv2 buffer = [] def worker(): global buffer while True: cv2.waitKey(50) try: if len(buffer) > 0: task = buffer.pop(0) if task is None: cv2.destroyAllWindows() else: flag, img, title = task cv2.imshow(flag, img) cv2.setWindowTitle(flag, title) cv2.setWindowProperty(flag, cv2.WND_PROP_TOPMOST, 1) except Exception as e: print(e) pass def show_preview(flag, img, title='preview'): buffer.append((flag, img[..., ::-1].copy(), title)) def close_all_preview(): buffer.append(None) threading.Thread(target=worker, daemon=True).start()