Как напечатать значения в GUI из изображения в Python? - PullRequest
0 голосов
/ 30 января 2019

Я новичок в разработке GUI. Здесь я создал два GUI, один для фотографирования, а другой для показа функций. Итак, я использовал две функции. Но я не знаю некоторых вещей. Теперь мне нужнодва вида помощи от вас.1) какая команда для печати значения с плавающей точкой в ​​графическом интерфейсе (не на консоли)?2) Как рассчитать значение среднего, дисперсии, SD и т. Д. Из изображения и как передать эти значения из одной функции в другую функцию?

 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()

1 Ответ

0 голосов
/ 31 января 2019

Хорошо, мне потребовалось еще немного времени, чтобы разобраться в этом.
Что касается вычисления значений, ваш предыдущий вопрос сделал это правильно, однако переменные должны были быть доступны глобально.Что касается отображения текста, вы должны добавить текстовый виджет tkinter.Если вы хотите добавить больше вычисляемых значений, просто введите в Google значение numpy + 'value your want'.

Я взял ваш код и создал рабочий пример, см. Код ниже.Обратите внимание, что я удалил некоторые вещи, которые не были нужны для примера, поэтому скопируйте нужные строки в свой собственный код.Также проверьте эту ссылку для текстового виджета.

Результат:

enter image description here

Код:
Примечание: я специально создал 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()
...