|
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() |
|
|