如何在python opencv GUI中打印某些功能?

时间:2019-01-29 16:17:51

标签: python opencv image-processing

我想在python openCV中打印图像的均值,高度和宽度。我使用两个按钮(获取照片和分析图像)和不同的GUI,一个用于获取照片(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 :(得分:0)

当您尝试打印变量时,它们不在范围内。这是一项重要的编程原则,因此建议您阅读introduction

您可以将变量设置为全局变量,以使它们可以在函数外部访问:

def openphoto():
    global width, height, mean
    [rest of code]