Image_Processing / src /create_dataset.py
Shingome
initial commit
abd6e8b
import tkinter as tk
from random import randint as rd
import numpy as np
from PIL import ImageTk, Image
class App:
def save(fun):
def saved(self):
if self.dataset:
dataset = np.asarray(self.dataset, dtype=object)
try:
old_dataset = np.load('./../dataset.npy',
allow_pickle=True)
dataset = np.vstack((dataset, old_dataset))
np.save('./../dataset.npy', dataset)
except:
np.save('./../dataset.npy', dataset)
print('Создан новый файл')
print(dataset.shape[0])
fun(self)
return saved
def __init__(self):
self.window = tk.Tk()
self.window.resizable(False, False)
self.window.title('dataset')
self.window.geometry('550x320')
self.dataset = []
button_135 = tk.Button(self.window, text='135', width=10, height=5, command=lambda: self.save_image(4))
button_135.place(x=450, y=10)
button_45 = tk.Button(self.window, text='45', width=10, height=5, command=lambda: self.save_image(3))
button_45.place(x=450, y=110)
button_180 = tk.Button(self.window, text='180', width=10, height=5, command=lambda: self.save_image(2))
button_180.place(x=350, y=10)
button_90 = tk.Button(self.window, text='90', width=10, height=5, command=lambda: self.save_image(1))
button_90.place(x=350, y=110)
button_none = tk.Button(self.window, text='none', width=10, height=5, command=lambda: self.save_image(0))
button_none.place(x=350, y=210)
button_next = tk.Button(self.window, text='next', width=10, height=5, command=lambda: self.next_image())
button_next.place(x=450, y=210)
self.images = np.load('./../images_for_dataset.npy')
self.canvas = tk.Canvas(self.window, height=300, width=300)
self.image_prev = self.images[rd(0, np.shape(self.images)[0])]
self.image = Image.fromarray(self.image_prev)
self.image = self.image.resize((300, 300), resample=Image.NEAREST)
self.photo = ImageTk.PhotoImage(self.image)
self.image = self.canvas.create_image(0, 0, anchor='nw', image=self.photo)
self.canvas.place(x=10, y=10)
self.window.mainloop()
@save
def next_image(self):
self.dataset = []
self.image_prev = self.images[rd(0, np.shape(self.images)[0])]
self.image = Image.fromarray(self.image_prev)
self.image = self.image.resize((300, 300), resample=Image.NEAREST)
self.photo = ImageTk.PhotoImage(self.image)
self.image = self.canvas.create_image(0, 0, anchor='nw', image=self.photo)
self.canvas.place(x=10, y=10)
def save_image(self, answer):
image_mat = np.asarray(self.image_prev) / 255
image_array = np.reshape(image_mat, (1, 64))
self.dataset.append([answer, image_array])
self.dataset.append([answer, np.ones((1, 64)) - image_array])
if answer in (3, 4):
image_array = image_mat.T
image_array = np.reshape(image_array, (1, 64))
self.dataset.append([answer, image_array])
self.dataset.append([answer, np.ones((1, 64)) - image_array])
image_array = np.rot90(np.rot90(image_mat))
image_array = np.reshape(image_array, (1, 64))
self.dataset.append([answer, image_array])
self.dataset.append([answer, np.ones((1, 64)) - image_array])
image_array = image_mat.T
image_array = np.reshape(image_array, (1, 64))
self.dataset.append([answer, image_array])
self.dataset.append([answer, np.ones((1, 64)) - image_array])
else:
image_array = np.flipud(image_mat)
image_array = np.reshape(image_array, (1, 64))
self.dataset.append([answer, image_array])
self.dataset.append([answer, np.ones((1, 64)) - image_array])
image_array = np.fliplr(image_mat)
image_array = np.reshape(image_array, (1, 64))
self.dataset.append([answer, image_array])
self.dataset.append([answer, np.ones((1, 64)) - image_array])
image_array = np.flipud(image_mat)
image_array = np.reshape(image_array, (1, 64))
self.dataset.append([answer, image_array])
self.dataset.append([answer, np.ones((1, 64)) - image_array])
self.next_image()
app = App()