[Python] Hágalo usted mismo para implementar un subprograma de matting automático con una interfaz

Presenté cómo usar Python para recortar el fondo de la imagen, pero también tiene ciertas limitaciones. Por ejemplo, tenemos que poner la imagen a recortar en la ruta especificada, y luego modificar el nombre del recorte en el programa, etc. , Estas son muchas limitaciones.

El siguiente código mejora el programa. Una vez que se ejecuta, podemos elegir la imagen para eliminar el fondo, y tiene ventanas y botones de interfaz. ¿Se ve más profesional? ! También puedes filtrar según diferentes formatos de imagen, parece un programa pequeño, echemos un vistazo ~

 

Programa de corte de interfaz

1. Eche un vistazo

Primero mire el efecto, que es la ventana blanca en la imagen de abajo 

2. Principio de implementación

Depende de Tkinter para lograr una ventana local , Tkinter es el puerto de conexión estándar del kit de herramientas TK GUI de Python , que se puede usar en la mayoría de las plataformas Unix, lo mismo se puede aplicar a los sistemas Windows y Macintosh. Las versiones posteriores de Tk80 pueden implementar estilos de ventana nativos y funcionar bien en la mayoría de las plataformas.

La parte del código no es muy complicada.

Enfatice: La clave de la interfaz API en el interior se menciona en el blog anterior. Los pasos para obtenerla también son muy simples. Solo necesita iniciar sesión y registrarse para encontrar su clave API exclusiva: https://blog.csdn.net/ weixin_44566432 / article / details / 107840109

Incluyendo la introducción del programa del recorte, lo siguiente es una buena comprensión, principalmente para establecer las propiedades de la ventana y completar la función de seleccionar y generar imágenes.

import os
from tkinter import Tk, Menu, Label, Button
from tkinter.filedialog import askopenfilenames
from tkinter.messagebox import showinfo
from removebg import RemoveBg

rmbg = RemoveBg('你的API接口密钥!!!', 'error.log')#!!!

def remove_bg(img_path):
    rmbg.remove_background_from_img_file(img_path)

IMGPATH = ''

class GUI(object):
    def __init__(self, window):
        self.window = window
        self.window.title('去除图片背景')
        self.window.geometry('300x200')
        menubar = Menu(self.window)

        #定义空菜单
        filemenu = Menu(menubar, tearoff=0)
        filemenu.add_command(label='帮助', command=self.helpme)
        filemenu.add_separator()

        #显示
        self.l = Label(window, text='')
        self.l.pack(padx=5, pady=10) #固定窗口

        #选择照片
        btn1 = Button(window, text='选择照片', width=15, height=2, command=self.get_img)
        btn1.pack()

        #生成图片
        self.send_btn = Button(window, text='去除背景', width=15, height=2, command=self.gen_img)
        self.send_btn.pack()

    def helpme(self):
        showinfo('帮助', '请关注公众号,联系作者')

    #选择图片
    def get_img(self):
        global IMGPATH
        #选择文件
        filenames = askopenfilenames(filetypes=(('jpeg img', '*.jpeg'),
                                                ('jpg img', '*.jpg'), ('png img', "*.png")
                                                ))
        if len(filenames) > 0:
            fnlist = [fn for fn in filenames]
            fnstr = '\n'.join(fnlist)
            self.l.config(text=fnstr)
            IMGPATH = fnlist
        else:
            self.l.config(text='目前没有选择任何图片文件')
    
    #生成图片
    def gen_img(self):
        global IMGPATH
        respathlist = []
        for imgpath in IMGPATH:
            filepath, tempfilename = os.path.split(imgpath)
            filename, extension = os.path.splitext(tempfilename)
            remove_bg(imgpath)
            respathlist.append(imgpath)
        respath = ' '.join(respathlist)
        showinfo('完成生成', f'图片处理完成,路径为: {respath}')

#创建窗口
window = Tk()
GUI(window)
#显示窗口,必须在所有控件后
window.mainloop()

Si tiene alguna pregunta, deje un mensaje para discutir ~

Si hay algún problema, corrígeme, ¡gracias!

 

Supongo que te gusta

Origin blog.csdn.net/weixin_44566432/article/details/107836371
Recomendado
Clasificación