Как я могу напечатать некоторые функции в Python OpenCV GUI? - PullRequest
0 голосов
/ 29 января 2019

Я хочу напечатать среднее, высоту и ширину изображения в python openCV.Где я использовал две кнопки (получить фотографию и анализ изображения) и другой графический интерфейс, одну для получения фотографии (def openphoto():) и другую для печати этих функций (def feature():).Но я получаю ошибку.

Примечание: полный код слишком длинный. Поэтому я использовал его часть.

Я пробовал это в python openCV.

import tkinter as tk
from tkinter.filedialog import askopenfilename
import shutil
import os
from PIL import Image, ImageTk
window = tk.Tk()
window.title("Dr. Papaya")
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 here
    print("Mean : ",mean)    
    print("Heigth : ",heigth)
    print("Width : ",width)
    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
    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)
    load = Image.open(fileName)
    #calculate the mean
    mean=np.mean(load)
    #calculate the height & width
    height = np.size(load, 0)
    width = np.size(load, 1)
    render = ImageTk.PhotoImage(load)
    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 голосов
/ 29 января 2019

Переменные не находятся в области видимости, когда вы пытаетесь их распечатать.Это важный принцип программирования, поэтому я предлагаю вам прочитать это введение

Вы можете сделать переменную глобальной, чтобы сделать ее доступной вне функции:

def openphoto():
    global width, height, mean
    [rest of code]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...