如何从 python 中的图像在 GUI 中打印值?

How to print values in GUI from image in python?

我是 GUI 新手 developing.Here 我创建了两个 GUI,一个用于拍照,另一个用于显示 features.so,我用了两个 functions.but 我不知道'我不知道一些 things.Now 我需要你的两种帮助。 1) 在 GUI 中打印浮点值的命令是什么(不是在控制台上)? 2)如何计算均值,方差,s.d的值。等从图像以及如何将这些值从一个函数传递到另一个函数?

 import tkinter as tk
 from tkinter.filedialog 
 import askopenfilename
 import shutil
 import os
 from PIL import Image, ImageTk

 window = tk.Tk()

 window.title(" ")

  window.geometry("500x510")
  window.configure(background ="lightgreen")
  title = tk.Label(text="Click below to choose picture for testing disease....", background = "lightgreen", fg="Brown", font=("", 15))
  title.grid()
 def feature():
    window.destroy()
    window1 = tk.Tk()

    window1.title(" ")

    window1.geometry("650x510")
                      window1.configure(background="lightgreen")

      def exit():
             window1.destroy()
    #i want to print some features of image e.g. Mean, variance,s.d. Etc.
      button = tk.Button(text="Exit", command=exit)
      button.grid(column=0, row=9, padx=20, pady=20)

      window1.mainloop()


def openphoto():
    import cv2
    import numpy as np

    dirPath = " "
    fileList = os.listdir(dirPath)
    for fileName in fileList:
         os.remove(dirPath + "/" + fileName)

          fileName = askopenfilename(initialdir='', title='Select image for analysis ',
                       filetypes=[('image files', '.jpg')])
          dst = " "
          shutil.copy(fileName, dst)
          #this is the image
          Photo = Image.open(fileName)

          render = ImageTk.PhotoImage(photo)
          img = tk.Label(image=render, height="250", width="500")
          img.image = render
          img.place(x=0, y=0)
          img.grid(column=0, row=1, padx=10, pady = 10)
          title.destroy()
          button1.destroy()
          button2 = tk.Button(text="Analyse Image", command=feature)
         button2.grid(column=0, row=2, padx=10, pady = 10)
 button1 = tk.Button(text="Get Photo", command = openphoto)
 button1.grid(column=0, row=1, padx=10, pady = 10)
window.mainloop()

好的,我花了一些时间研究它。
关于值的计算,您之前的 是正确的,但是变量需要可以在全球范围内访问。关于文本的显示,您必须添加一个 tkinter 文本小部件。如果要添加更多计算值,只需 google for numpy + 'value your want'.

我已经使用了您的代码并创建了一个工作示例,请参见下面的代码。请注意,我删除了示例中不需要的一些内容,因此请将您需要的行复制到您自己的代码中。另请查看 this reference 的文本小部件。

结果:

代码:
注意:我特意创建了 2 个文本小部件,以显示实现多个文本的 2 种方法

import tkinter as tk
from tkinter.filedialog import askopenfilename
import shutil
import os
from PIL import Image, ImageTk

window = tk.Tk()

window.title(" ")

window.geometry("500x510")
window.configure(background ="lightgreen")
title = tk.Label(text="Click below to choose picture for testing disease....", background = "lightgreen", fg="Brown", font=("", 15))
title.grid()

def feature():
    window.destroy()
    window1 = tk.Tk()
    window1.title(" ")

    ### create a text widget, place it in window1 and insert the text
    width_txt = tk.Text(window1, height=2, width=30, fg="RED", background = "lightgreen", relief="flat")
    width_txt.grid(column=0, row=0)
    width_txt.insert(tk.END, "Width: " + str(width))

    height_txt = tk.Text(window1, height=2, width=30, fg="RED", background = "lightgreen", relief="flat")
    height_txt.grid(column=0, row=1)
    height_txt.insert(tk.END, "Height: " + str(height) + "\nMean: " + str(mean))


    window1.geometry("650x510")
    window1.configure(background="lightgreen")

def openphoto():

    ### this line makes the variables accessible everywhere
    global width,height, mean
    import numpy as np

    fileName = askopenfilename(initialdir='', title='Select image for analysis ',
                filetypes=[('image files', '.jpg')])
    photo = Image.open(fileName)

    #### calculate values 
    height = np.size(photo, 0)
    width = np.size(photo, 1)
    mean = np.mean(photo)


    render = ImageTk.PhotoImage(photo)
    img = tk.Label(image=render, height="250", width="500")
    img.image = render
    img.place(x=0, y=0)
    img.grid(column=0, row=1, padx=10, pady = 10)
    title.destroy()
    button1.destroy()
    button2 = tk.Button(text="Analyse Image", command=feature)
    button2.grid(column=0, row=2, padx=10, pady = 10)

button1 = tk.Button(text="Get Photo", command = openphoto)
button1.grid(column=0, row=1, padx=10, pady = 10)
window.mainloop()