tkinter 实现选择路径(有解决中文路径、中文档名问题)打开显示照片,可选择 cv2.COLOR_ 模式并用 for

import cv2import numpy as npfrom tkinter import filedialogimport tkinter as tkfrom PIL import ImageTk, Imagefrom matplotlib import pyplot as pltfrom matplotlib.backends.backend_tkagg import FigureCanvasTkAggfrom matplotlib.figure import Figureroot = tk.Tk()radioValue = tk.IntVar()mediaFrame = tk.Frame(root).pack()"""创建 tkinker label"""media = tk.Label(mediaFrame)media.pack()fig = plt.figure()"""创建初始画布"""f_plot =fig.add_subplot(111)"""创建 histogram 画布"""canva = FigureCanvasTkAgg(fig,root)canva.get_tk_widget().pack(side='right')def cv_imread(filePath):    cv_img=cv2.imdecode(np.fromfile(filePath,dtype=np.uint8),-1)    return cv_imgdef validate():    value = radioValue.get()    global mode    '''    1 cv2.COLOR_BGR2RGB    2 cv2.COLOR_BGR2HSV    3 cv2.COLOR_BGR2HLS    4 cv2.COLOR_BGR2Lab    5 cv2.COLOR_BGR2Luv    6 cv2.COLOR_BGR2YCrCb    7 cv2.COLOR_BGR2XYZ    '''    if (value == 1):        mode = cv2.COLOR_BGR2RGB    if( value == 2):        mode = cv2.COLOR_BGR2HSV    if( value == 3):        mode = cv2.COLOR_BGR2HLS    if( value == 4):        mode = cv2.COLOR_BGR2Lab    if( value == 5):        mode = cv2.COLOR_BGR2Luv    if( value == 6):        mode = cv2.COLOR_BGR2YCrCb    if( value == 7):        mode = cv2.COLOR_BGR2XYZdef oas():    plt.cla()    global mode    sfname = filedialog.askopenfilename(title='选择',                                        filetypes=[                                            ('All Files','*'),                                            ("jpeg files","*.jpg"),                                            ("png files","*.png"),                                            ("gif files","*.gif")])        cv2image = cv2.cvtColor(cv2.resize(cv_imread(sfname),(500,250)),mode)    size = cv2image.shape    (high,width,path) = size    y = np.zeros((256))    for i in range(0,high):      for j in range(0,width):         y[cv2image[i,j]] += 1    x = np.arange(0,256)    plt.bar(x,y,color="gray",align="center")    img = Image.fromarray(cv2image)    imgtk = ImageTk.PhotoImage(image=img)    media.imgtk = imgtk    media.configure(image=imgtk)    canva.draw()r1 = tk.Radiobutton(root,text = " bgr 、 rgb 互转模式",variable=radioValue, value=1,command = validate).pack()r2 = tk.Radiobutton(root,text = " hsv ",variable=radioValue, value=2,command = validate).pack()r3 = tk.Radiobutton(root,text = " hls ",variable=radioValue, value=3,command = validate).pack()r4 = tk.Radiobutton(root,text = " lab ",variable=radioValue, value=4,command = validate).pack()r5 = tk.Radiobutton(root,text = " luv ",variable=radioValue, value=5,command = validate).pack()r6 = tk.Radiobutton(root,text = " ycrcb ",variable=radioValue, value=6,command = validate).pack()r7 = tk.Radiobutton(root,text = " xyz ",variable=radioValue, value=7,command = validate).pack()b1 = tk.Button(root, text="打开",command = oas).pack()root.mainloop()

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章