diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1fcb152 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +out diff --git a/src/gui/main.ui b/src/gui/main.ui index 3dfcf14..75d724a 100644 --- a/src/gui/main.ui +++ b/src/gui/main.ui @@ -23,7 +23,7 @@ n - 300 + 20 @@ -34,7 +34,8 @@ 0 - 80 + 60 + 0 0 @@ -56,7 +57,8 @@ 1 - 80 + 2 + 60 0 @@ -66,7 +68,8 @@ Canny Edge threshold 2 1 - 1 + 2 + 5 1 1 @@ -76,12 +79,12 @@ true string:img_path - file + directory 0 - 2 - 200 + 1 + 30 4 1 @@ -89,10 +92,10 @@ - Image path + Dataset path 0 - 2 + 1 5 @@ -105,7 +108,8 @@ 0 - 80 + 60 + 0 2 @@ -128,8 +132,8 @@ 0 - 2 - 230 + 1 + 60 6 1 @@ -140,7 +144,7 @@ Size 0 - 2 + 1 7 1 @@ -150,10 +154,11 @@ string:sobel_select x y both - + 1 - 60 + 2 + 40 2 @@ -163,18 +168,82 @@ Sobel edge 1 + 2 + 5 3 + + + Next img + + + 1 + 10 + 4 + + + + + + Prev img + + + 2 + 10 + 4 + + + + + + Switch image + + 1 + 2 + 5 + 5 + + + + + + Export dataset + + + 2 + 2 + 0 + 6 + + + + + + int:export_id + 15 + + 1 + 6 + + + + + + Img to export + + 1 + 7 + + + - - 200 - n - Output - 200 + + both + false true both @@ -182,6 +251,7 @@ + flat true both diff --git a/src/suite.py b/src/suite.py index 8cc9c4f..ab2297d 100644 --- a/src/suite.py +++ b/src/suite.py @@ -1,15 +1,16 @@ #!/usr/bin/python3 import pathlib import pygubu +import glob from tkinter import * from PIL import ImageTk, Image import numpy as np import cv2 +import time PROJECT_PATH = pathlib.Path(__file__).parent PROJECT_UI = "./src/gui/main.ui" - class MainApp: def __init__(self, master=None): self.builder = builder = pygubu.Builder() @@ -23,30 +24,73 @@ class MainApp: self.canny_thr1 = None self.canny_thr2 = None + self.img_path = None + self.img_current = 0 + self.img_max = 0 + self.blur_rate = None self.img_size = None self.sobel_select = None + self.export_id = None builder.import_variables(self, ['canny_thr1', 'canny_thr2', 'img_path', 'blur_rate', 'img_size', - 'sobel_select']) - + 'sobel_select', + 'export_id']) builder.connect_callbacks(self) def run(self): self.mainwindow.mainloop() + + def img_prev(self, event=None): + if self.img_current == 0: + self.img_current = self.img_max - 1 + else: + self.img_current = self.img_current - 1 + self.update(self) + + def img_next(self, event=None): + if self.img_current == (self.img_max - 1): + self.img_current = 0 + else: + self.img_current = self.img_current + 1 + self.update(self) + + def apply(self, event=None): + img_arr = self.tk_imgs + img_id = self.export_id.get() + + if (img_id >= 0 and img_id < len(img_arr)): + print("export") + else: + print("Nothing to export!") def update(self, event=None): path = self.img_path.get() + print(path) + + drawW = self.canvas.winfo_width() + drawX = 0 + drawY = 0 if path != None and path != "": + # Get all images at current path + images = [] + for file in glob.glob(path + "/*.png"): + images.append(file) + + self.img_max = len(images) + # Get all user vars ct1 = self.canny_thr1.get() ct2 = self.canny_thr2.get() + + print(f"canny 1: {ct1}, canny2: {ct2}") + br = self.blur_rate.get() sxy = self.sobel_select.get() size = self.img_size.get() @@ -58,7 +102,7 @@ class MainApp: self.tk_imgs = [] # Import and resize image - img = cv2.imread(path) + img = cv2.imread(images[self.img_current]) img = cv2.resize(img, (size, size), interpolation = cv2.INTER_AREA) output.append(img) # First output image is original @@ -105,8 +149,14 @@ class MainApp: tk_img = ImageTk.PhotoImage(image=Image.fromarray(tk_img)) self.tk_imgs.append(tk_img) - self.canvas.create_image((size * idx),0,anchor=NW,image=self.tk_imgs[idx],tags="og") - + ## Check if next item will be out of range + if (drawX + size >= drawW): + drawY += size + drawX = 0 + self.canvas.configure(height=(drawY+size)) + + self.canvas.create_image(drawX,drawY,anchor=NW,image=self.tk_imgs[idx],tags="og") + drawX += size self.canvas.draw() if __name__ == "__main__":