源代码
import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
from tkinter import *
import os
class cvImage:
def cvTest():
paths = filedialog.askopenfilenames(filetypes= (('png图片', '*.png'), ('jpg图片', '*.jpg')),title= "选择一个或多个要处理的文件")
for index in range(len(paths)):
img = cv.imread(paths[index])
dst = cv.fastNlMeansDenoisingColored(img,None,10,10,7,21)
plt.imshow(img)
plt.subplot(121),plt.imshow(img)
plt.title("..."+paths[index][-20:])
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(dst)
plt.title("..."+paths[index][-20:])
plt.xticks([]), plt.yticks([])
plt.show()
def cvMain():
images = filedialog.askopenfilenames(filetypes= (('png图片', '*.png'), ('jpg图片', '*.jpg')),title= "选择一个或多个要处理的文件")
dic = filedialog.askdirectory(title= "选择输出文件夹 ")
for image in images:
img = cv.imread(image)
dst = cv.fastNlMeansDenoisingColored(img,None,10,10,7,21)
outName = dic+"/out"+image.split("/")[-1]
file = open(outName,"w")
file.close()
print(outName)
cv.imwrite(str(outName),dst)
messagebox.showinfo('处理完成','图像输出位置:'+dic)
class windows:
def __init__(self,init_window_name):
self.init_window_name = init_window_name
self.init_window_name.geometry('300x200')
def setWindow(self):
self.init_window_name.title("图像批量处理")
self.noise_label = Label(self.init_window_name, text ="图像去噪")
self.noise_label.grid(row=0,column=0)
self.test_button = Button(self.init_window_name, text ="效果测试", command = cvImage.cvTest)
self.test_button.grid(row=0, column=1)
self.upload_button = Button(self.init_window_name, text ="开始处理", command = cvImage.cvMain)
self.upload_button.grid(row=0, column=2)
def guiStart():
init_window = Tk()
ZMJ_PORTAL = windows(init_window)
ZMJ_PORTAL.setWindow()
init_window.mainloop()
guiStart()
版本