在Python中打开文件图像,存储为变量,将图像显示到Python程序,使用“面部识别”对图像进行分析

时间:2018-03-04 17:21:05

标签: python opencv azure-cognitive-services

我正在尝试在Python中创建一个文件浏览器,它允许我从Windows系统上的任何目录中提取图像文件。到目前为止,我无法在Python中完成这个看似基本的任务。甚至我学校的教授都无法提供帮助。

我尝试制作的程序将在图像文件上执行面部识别,将图像文件存储为变量,然后执行该文件的分析并将分析打印到某些tkinter标签。

我已经咬过的东西比我现在可以咀嚼的还多。我是一名新程序员,我已经编程了大约3个月。我在人工智能课程中,但是,该课程不使用结构化语言。我们学校似乎没有专业的python程序员,所以我绝对可以使用一些帮助。

非常感谢GUI工具和面部识别的任何建议。之前使用的API是来自Microsoft Azure的cognitive_face API。寻找与cognitive_face一样有效的免费开源API。

以下是一些基本代码。寻找任何可用的推荐。

import subprocess
from tkinter import *



#Define Functions Here
def Open_File():
    subprocess.Popen(r'explorer /select,"C:\path\of\folder\file"')

def main_window(main):
    window.title('Facial Recognition')
    main.update_idletasks()
    width = 1024
    height = 768
    #find the center point of the width on the screen
    x = (main.winfo_screenwidth()//2)-(width//2)
    #find the center point of the height on the screen
    y = (main.winfo_screenheight()//2)-(height//2)

    main.geometry('{}x{}+{}+{}'.format(width,height,x,y))



#Define your Window
window = Tk()
main_window(window)

#Create Frames
topFrame = Frame(window)
topFrame.pack(side=LEFT)
bottomFrame = Frame(window)
bottomFrame.pack(side=RIGHT)

#Add Cascade Dropdown Menus
menu = Menu(window) #Add a Menu to the main window
window.config(menu=menu)

subMenu=Menu(menu)#declare a subMenu for menu
menu.add_cascade(label="File",menu=subMenu)#assign a dropdown for menu
subMenu.add_command(label="Open Image..",command =Open_File)
#Add a separator for your subMenu
subMenu.add_separator()
subMenu.add_command(label="Exit",command=exit)


#Add Buttons
##button1 = Button(topFrame,text="Open File...",fg="Grey",command=Open_File)
##button1.pack()
##button2 = Button(topFrame,text="Open Image...",fg="Dark Grey")
##button2.pack()


#Official Window loop continuously displays to screen
window.mainloop()

1 个答案:

答案 0 :(得分:0)

这可以让你到达可以将文件传递给OpenCV的地方

from tkinter import *
from tkinter import filedialog

class Application(Frame):

    def __init__(self, master):

        Frame.__init__(self, master)
        self.grid()
        self.create_widgets()

    def create_widgets(self):

        menubar = Menu(root)

        #SETUP FILE MENU
        filemenu = Menu(menubar, tearoff=0)
        filemenu.add_command(label="Exit", command=root.quit)
        menubar.add_cascade(label="File", menu=filemenu)

        selectmenu = Menu(menubar, tearoff=0)
        selectmenu.add_command(label="Select Images", command= self.Find_Face)
        menubar.add_cascade(label="Select Images", menu=selectmenu)

        root.config(menu=menubar)

    #Define Functions Here
    def Open_File(self):
        self.filename =  filedialog.askopenfilename(initialdir = "/",title = "Select file",filetypes = (("jpeg files","*.jpg"),("all files","*.*")))
        return self.filename

    #Call open file from a different function and get the returned value
    def Find_Face(self):
        self.imagename = self.Open_File()
        print("File is: ", self.imagename)
        ##PASS THE FILE TO OPENCV AND PROCESS


#Official Window loop continuously displays to screen
root = Tk()
root.title("Facial Recognition")
root.geometry("1024x768")
app = Application(root)
root.resizable(width=FALSE, height=FALSE)
root.mainloop()

我经常使用tkinter。这个构造函数是最容易构建的。我修改了一下,以显示如何从任何其他函数调用打开文件函数,并获取返回值以传递到您想要执行的任何处理。

这是一个非常简单易用的python面部识别: https://realpython.com/blog/python/face-recognition-with-python/