From 6bd69367aa890616b1a4bfd03e0c0b917628a280 Mon Sep 17 00:00:00 2001 From: lvmin Date: Fri, 11 Aug 2023 05:19:09 -0700 Subject: [PATCH] i --- modules/core.py | 4 ++-- modules/cv2win32.py | 38 ++++++++++++++++++++++++++++++-------- 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/modules/core.py b/modules/core.py index ba45a929..1e5e2b8c 100644 --- a/modules/core.py +++ b/modules/core.py @@ -82,9 +82,9 @@ def get_previewer(device, latent_format): x_sample = x_sample.cpu().numpy().clip(0, 255).astype(np.uint8) for i, s in enumerate(x_sample): if i > 0: - show_preview(f'OpenCV Diffusion Preview {i}', s, title=f'Preview Image {i} [{step}/{total_steps}]') + show_preview(s, title=f'Preview Image {i}, step = [{step}/{total_steps}') else: - show_preview(f'OpenCV Diffusion Preview {i}', s, title=f'Preview Image [{step}/{total_steps}]') + show_preview(s, title=f'Preview Image, step = {step}/{total_steps}') taesd.preview = preview_function diff --git a/modules/cv2win32.py b/modules/cv2win32.py index a235fd78..66eabddd 100644 --- a/modules/cv2win32.py +++ b/modules/cv2win32.py @@ -1,14 +1,36 @@ +import threading import cv2 -def show_preview(flag, img, title=None): - if title is None: - title = flag - cv2.imshow(flag, img[:, :, ::-1].copy()) - cv2.setWindowTitle(flag, title) - cv2.setWindowProperty(flag, cv2.WND_PROP_TOPMOST, 1) - cv2.waitKey(1) +flag = 'fooocus_cv2win32' +buffer = [] + + +def worker(): + global buffer, flag + while True: + cv2.waitKey(50) + try: + if len(buffer) > 0: + task = buffer.pop(0) + if task is None: + cv2.destroyAllWindows() + else: + 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(img, title='preview'): + buffer.append((img, title)) def close_all_preview(): - cv2.destroyAllWindows() + buffer.append(None) + + +threading.Thread(target=worker, daemon=True).start()