def run(): print("***RUNNING***") cutoff = setCutoff.get() order = setOrder.get() width = setWidth.get() # Load image print("Uploading " + img) image = cv2.imread(img, 0) # Timer Start start = time.time() print("Starting Timer") # Filter Image obj = Filters(image, filter, cutoff, order, width) out = obj.FFT() # Timer End end = time.time() print("Timer Stopped") t = float("{0:.3f}".format(end - start)) print("Total Time = ", t) # clear old plots plt.clf() # Image display a1 = fig.add_subplot(221) a1.imshow(image, cmap='binary_r') a1.axis('off') a1.set_title("Original Image") # DFT graph a2 = fig.add_subplot(222) a2.imshow(out[0], cmap='binary_r') a2.xaxis.set_visible(False) a2.yaxis.set_visible(False) a2.set_title("Magnitude DFT") # Mask graph a3 = fig.add_subplot(223) a3.imshow(out[1], cmap='binary_r') a3.set_facecolor('k') a3.xaxis.set_visible(False) a3.yaxis.set_visible(False) a3.set_title("Mask") # Resulting Image display """if there is a value inside of the Weight field, the program assumes to use unsharp, otherwise it uses original filter""" if is_number(setWeight.get()): # output_dir = 'output/' # output_image_name = output_dir + "_" + datetime.now().strftime("%m%d-%H%M%S") + ".jpg" outName = "output/result.png" image1 = np.int32(image) image2 = np.int32(out[2]) diff = image1 - image2 unsharpImage = (image + (float(setWeight.get()) * diff)) cv2.imwrite(outName, unsharpImage) # writes the image first, then displays the result. Doing this the other way around causes imshow to display a different image resultImage = cv2.imread('output/result.png', 0) a4 = fig.add_subplot(224) a4.imshow(resultImage, cmap='binary_r') a4.set_title("Filtered Image") else: a4 = fig.add_subplot(224) a4.imshow(out[2], cmap='binary_r') a4.axis('off') a4.set_title("Filtered Image") fig.tight_layout() canvas = FigureCanvasTkAgg(fig, master=window) canvas.get_tk_widget().grid(row=2, columnspan=6) # print time t1 = str(t) msg = "Time Elapsed: " + t1 Label(window, text=msg, font=("Times", 15), fg="red").grid(row=3, sticky=NE) canvas.draw()
def run(): print("***RUNNING***") if (setFFT.get() == 0): print("Using Built-in FFT") if (setFFT.get() == 1): print("Using own FFT") cutoff = setCutoff.get() order = setOrder.get() width = setWidth.get() weight = setWeight.get() x_val = setX.get() y_val = setY.get() whichFFT = setFFT.get() # Load image print("Uploading " + img) image = cv2.imread(img, 0) # Timer Start start = time.time() print("Starting Timer") # Filter Image obj = Filters(image, filter, cutoff, order, width, weight, x_val, y_val, whichFFT) out = obj.FFT() # Timer End end = time.time() print("Timer Stopped") t = float("{0:.3f}".format(end - start)) print("Total Time = ", t) # clear old plots plt.clf() # Image display a1 = fig.add_subplot(221) a1.imshow(image, cmap='binary_r') a1.axis('off') a1.set_title("Original Image") # DFT graph a2 = fig.add_subplot(222) a2.imshow(out[0], cmap='binary_r') a2.xaxis.set_visible(False) a2.yaxis.set_visible(False) a2.set_title("Magnitude DFT") # Mask graph a3 = fig.add_subplot(223) a3.imshow(out[1], cmap='binary_r') a3.set_facecolor('k') a3.xaxis.set_visible(False) a3.yaxis.set_visible(False) a3.set_title("Mask") # Resulting Image display a4 = fig.add_subplot(224) a4.imshow(out[2], cmap='binary_r') a4.axis('off') a4.set_title("Filtered Image") fig.tight_layout() canvas = FigureCanvasTkAgg(fig, master=window) canvas.get_tk_widget().grid(row=2, columnspan=6) output_dir = 'output/' output_image_name = output_dir + "_dft_filter_" + datetime.now().strftime( "%m%d-%H%M%S") + ".jpg" cv2.imwrite(output_image_name, out[2]) # print time t1 = str(t) msg = "Time Elapsed: " + t1 Label(window, text=msg, font=("Times", 15), fg="red").grid(row=3, sticky=NE) canvas.draw()