Откройте изображение файла в Python, сохраните как переменную, отобразите изображение в программе Python, выполните анализ изображения с помощью распознавания лиц.

Я пытаюсь создать проводник на Python, который позволяет мне извлекать файл изображения из любого каталога в системе Windows. До сих пор мне не удавалось выполнить эту, казалось бы, простую задачу на Python. Даже профессора в моей школе не могут помочь.

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

Я откусил больше, чем могу прожевать сейчас. Я начинающий программист, программирую около 3-х месяцев. Я учусь в классе искусственного интеллекта, однако в классе не используется структурированный язык. Кажется, в нашей школе нет опытных программистов на Python, поэтому мне определенно не помешала бы помощь.

Буду очень признателен за любые рекомендации по инструментам GUI и распознаванию лиц. Ранее использовавшимся API был когнитивный_фейс API от Microsoft Azure. Ищете бесплатный 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()

person Jason Johnson    schedule 04.03.2018    source источник
comment
Я думаю, вы ищете функции askopenfile tkinter. pythonspot.com/tk-file-dialogs   -  person Rankinstudio    schedule 04.03.2018


Ответы (1)


Это должно привести вас туда, где вы можете передать файл в 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/

person Rankinstudio    schedule 04.03.2018
comment
Это миры за пределами того, где я был. Большое спасибо. Я пытался разобраться в этом около двух недель. Я был удивлен, что это было так трудно найти, как это было. - person Jason Johnson; 05.03.2018
comment
На tkinter есть сериал на ютубе, который действительно хорош. Где я этому научился. - person Rankinstudio; 05.03.2018