Einfügen eines Sliders

Um den Grad der Faarbblindheit korrekt zu Simulieren, muss ein Widget eingebaut werden, welches den prozentualen Anteil der Differenz zwischen Simulation und echtem Wert vergleicht und mit dem ausgewählten Wert (z. B. 80%) neu gewichtet.
This commit is contained in:
Max Sponsel 2020-08-25 09:40:16 +02:00
parent d1cd073fde
commit da88618ce6

View File

@ -53,7 +53,8 @@ class Protanopie(Dyschromasie):
# Einzelne Pixelwertberechnung
for i in range(self.rows):
for j in range(self.cols):
self.cb_image[i, j] = np.flipud(self.T_reversed.dot(self.sim_mat).dot(self.T).dot(np.flipud(self.cb_image[i, j])))
self.cb_image[i, j] = np.flipud(
self.T_reversed.dot(self.sim_mat).dot(self.T).dot(np.flipud(self.cb_image[i, j])))
self.sim_image = np.copy(self.cb_image)
self.sim_image = self.sim_image.astype('uint8')
@ -83,7 +84,8 @@ class Deuteranopie(Dyschromasie):
# Einzelne Pixelwertberechnung
for i in range(self.rows):
for j in range(self.cols):
self.cb_image[i, j] = np.flipud(self.T_reversed.dot(self.sim_mat).dot(self.T).dot(np.flipud(self.cb_image[i, j])))
self.cb_image[i, j] = np.flipud(
self.T_reversed.dot(self.sim_mat).dot(self.T).dot(np.flipud(self.cb_image[i, j])))
self.sim_image = np.copy(self.cb_image)
self.sim_image = self.sim_image.astype('uint8')
@ -112,7 +114,8 @@ class Tritanopie(Dyschromasie):
# Einzelne Pixelwertberechnung
for i in range(self.rows):
for j in range(self.cols):
self.cb_image[i, j] = np.flipud(self.T_reversed.dot(self.sim_mat).dot(self.T).dot(np.flipud(self.cb_image[i, j])))
self.cb_image[i, j] = np.flipud(
self.T_reversed.dot(self.sim_mat).dot(self.T).dot(np.flipud(self.cb_image[i, j])))
self.sim_image = np.copy(self.cb_image)
self.sim_image = self.sim_image.astype('uint8')
@ -124,6 +127,7 @@ class Tritanopie(Dyschromasie):
self.sim_image[i, j, x] = self.reverseGammaCorrection(self.cb_image[i, j, x])
return self.sim_image
root = tk.Tk()
root.title("Projekt Dyschromasie")
@ -132,9 +136,13 @@ rows = 0
cols = 0
kanaele = 0
sim_pro = tk.IntVar(root)
sim_deut = tk.IntVar(root)
sim_tri = tk.IntVar(root)
sim_pro = tk.IntVar(root)
sim_deut = tk.IntVar(root)
sim_tri = tk.IntVar(root)
simGrad = tk.IntVar(root)
simulationsGradient = tk.Scale(root, from_=0, to_=100, variable=simGrad, orient='horizontal')
simulationsGradient.grid(column= 0, row = 1, columnspan=10)
def browse():
# Auswahl des FilePaths
@ -166,9 +174,9 @@ def simulate():
d = Deuteranopie(img, rows, cols, kanaele)
display_array_deut = cv2.cvtColor(np.copy(d.Simulate()), cv2.COLOR_BGR2RGB)
T = tk.Text(root,height=1,width=15)
T = tk.Text(root, height=1, width=15)
T.grid(columnspan=5)
T.insert('current',"Deutranopie:")
T.insert('current', "Deutranopie:")
conv_SimulationPic_deut = ImageTk.PhotoImage(image=PIL.Image.fromarray(display_array_deut))
sim_pic_deut = tk.Label(root, image=conv_SimulationPic_deut)
@ -200,20 +208,19 @@ def simulate():
sim_pic_pro.grid(columnspan=5)
btn = tk.Button(root, text="Browse", width=25, command=browse, bg='light blue')
btn.grid(column = 0, row = 0,columnspan=2)
btn.grid(column=0, row=0, columnspan=2)
simulateButton = tk.Button(root, text="Simulate", width=25, command=simulate, bg='light blue')
simulateButton.grid(column = 1, row = 0,columnspan=2)
simulateButton.grid(column=1, row=0, columnspan=2)
simulateButton.config(state='disabled')
checkButton_p = tk.Checkbutton(root, text="Protanop", variable=sim_pro, onvalue=1, offvalue=0, height=5, width=20)
checkButton_d = tk.Checkbutton(root, text="Deutanop", variable=sim_deut, onvalue=1, offvalue=0, height=5, width=20)
checkButton_t = tk.Checkbutton(root, text="Tritanop", variable=sim_tri, onvalue=1, offvalue=0, height=5, width=20)
checkButton_p.grid(column = 0, row = 1)
checkButton_d.grid(column = 1, row = 1)
checkButton_t.grid(column = 2, row = 1)
checkButton_p.grid(column=0, row=2)
checkButton_d.grid(column=1, row=2)
checkButton_t.grid(column=2, row=2)
root.mainloop()