def cmd_open_img(self): """ Command to open picture(s) """ self.str_info_message.set("") self.picN = 0 self.picI = 0 self.auto_reshape = [] self.reshape_parameters = [] try: # Choose of the picture(s) using a dialog window self.picadresses = filedialog.askopenfilenames( title='Open image(s)', filetypes=[("tif files", "*.tif"), ("jpg files", "*.jpg"), ("jpeg files", "*.jpeg"), ("png files", "*.png"), ("asc files", "*.asc"), ("bmp files", "*.bmp")]) self.picadresses = np.sort(self.picadresses) self.picadress = self.picadresses[0] self.image = import_image(self.picadress) self.picN = len(self.picadresses) self.picI = 0 self.var_picadress.set(self.picadresses[self.picI]) self.str_info_message.set("Files have been opened") self.cmd_plot_image() except (Exception, ): self.str_info_message.set("Opening failed")
def __init__(self, master): """ Constructor of the class @param master: """ # constructor of the parent class tkinter.Toplevel.__init__(self, master) # Main frame self.frame = tkinter.Frame(self) self.frame.pack() # initialisation of the variables self.x1, self.y1, self.x2, self.y2 = 0, 0, 0, 0 self.click_number = 0 # importation the picture self.img = import_image(master.var_picadress.get()) # Plotting of the figure self.fig = Figure(figsize=(5, 5)) self.canvas = FigureCanvasTkAgg(self.fig, master=self.frame) self.canvas.mpl_connect('motion_notify_event', self.get_xy_position) self.canvas.mpl_connect('button_press_event', self.click_choose_position) self.canvas.draw() self.canvas.get_tk_widget().pack() self.subplot = self.fig.add_subplot(111) self.subplot.imshow(self.img) self.title("Reshape picture") self.last = self.subplot.plot(self.x1, self.y1, '+', lw=10) self.plot() # The form self.frame_form = tkinter.Frame(self.frame) self.frame_form.pack() tkinter.Label(self.frame_form, text="x1").grid(row=0, column=0) self.x1_form = tkinter.Entry(self.frame_form, width=5) self.x1_form.grid(row=0, column=1) tkinter.Label(self.frame_form, text="y1").grid(row=0, column=2) self.y1_form = tkinter.Entry(self.frame_form, width=5) self.y1_form.grid(row=0, column=3) tkinter.Label(self.frame_form, text="x2").grid(row=0, column=4) self.x2_form = tkinter.Entry(self.frame_form, width=5) self.x2_form.grid(row=0, column=5) tkinter.Label(self.frame_form, text="y2").grid(row=0, column=6) self.y2_form = tkinter.Entry(self.frame_form, width=5) self.y2_form.grid(row=0, column=7) # The buttons self.frame_btn = tkinter.Frame(self.frame) self.frame_btn.pack() self.btn_clear_button = tkinter.Button(master=self.frame_btn, text='Clear', command=self.cmd_clear) self.btn_clear_button.grid(row=0, column=0) self.btn_draw_button = tkinter.Button(master=self.frame_btn, text='Draw', command=self.cmd_draw) self.btn_draw_button.grid(row=0, column=1) self.btn_reshape_button = tkinter.Button(master=self.frame_btn, text='Reshape', command=self.cmd_reshape) self.btn_reshape_button.grid(row=0, column=2)
def cmd_go_left(self): """ To go the previous picture """ if self.picI - 1 >= 0: self.picI -= 1 self.picadress = self.picadresses[self.picI] self.image = import_image(self.picadress) self.refresh_plot() self.var_picadress.set(self.picadresses[self.picI])
def cmd_go_right(self): """ To go the next picture """ if self.picI + 1 < self.picN: self.picI += 1 self.picadress = self.picadresses[self.picI] self.image = import_image(self.picadress) self.cmd_plot_image() self.refresh_plot() self.var_picadress.set(self.picadresses[self.picI])
def plot_3d(self, fig): """ 3D plot of the image @param fig: matplotlib.pylot.Figure The figure where is plotted the image @return: Nothing """ img = import_image(self.picadress) y = np.arange(len(img)) x = np.arange(len(img[0])) x, y = np.meshgrid(x, y) z = img subplot = fig.add_subplot(111, projection='3d') subplot.plot_surface(x, y, z, cmap=cm.plasma, linewidth=0, antialiased=False)