耗时2小时 Tkinter+pyplot+opencv 实现 图像降噪程序 面向对象

源代码

import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
from tkinter import *
import os

#opencv 图片处理类
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([])  # 隐藏 x 轴和 y 轴上的刻度值
            plt.subplot(122),plt.imshow(dst)
            plt.title("..."+paths[index][-20:])
            plt.xticks([]), plt.yticks([])  # 隐藏 x 轴和 y 轴上的刻度值
            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.init_window_name.iconbitmap("1.ico")
        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()

耗时2小时 Tkinter+pyplot+opencv 实现 图像降噪程序 面向对象_第1张图片

版本

  • python 3.7
  • opencv 4.5.5

你可能感兴趣的:(python,计算机视觉,python,tkinter)