Project

General

Profile

Files » ImageIO.py

Final version, new comments, Uses opencv for display instead of tkinter - Md Tamjidur RAHMAN, 10/31/2024 03:56 PM

 
1
import cv2 as cv
2
import numpy as np
3
import os
4
from PIL import Image
5
import tkinter as tk
6

    
7
class ImageIO:
8
    def __init__(self, shared_data):
9
        self.shared_data = shared_data
10

    
11
    def load_image(self, path):
12
        return cv.imread(path, cv.IMREAD_COLOR)
13

    
14
    def write_image(self, img, fileName="image.png"):
15
        if cv.imwrite(fileName, img):
16
            print(f"File {fileName} Written Successfully")
17
        else:
18
            print("File writing failed")
19

    
20
    def show_image(self, img, title="Image Title", canvas=None):
21
        # Set up OpenCV fullscreen window in the main thread
22
        cv.namedWindow(title, cv.WINDOW_NORMAL)
23
        cv.setWindowProperty(title, cv.WND_PROP_FULLSCREEN, cv.WINDOW_FULLSCREEN)
24
        
25
        # Resize the image to 1920x1080 resolution
26
        img_resized = cv.resize(img, (1920, 1080), interpolation=cv.INTER_LINEAR)
27
        
28
        # Display the resized image in OpenCV and keep it open without blocking Tkinter
29
        cv.imshow(title, img_resized)
30

    
31
        # Run a non-blocking loop to keep OpenCV window and Tkinter GUI responsive
32
        while cv.getWindowProperty(title, cv.WND_PROP_VISIBLE) >= 1:
33
            cv.waitKey(1)
34
            if canvas:
35
                canvas.update_idletasks()
36
                canvas.update()
37

    
38
        # Close the OpenCV window once the loop ends
39
        cv.destroyAllWindows()
(32-32/49)