Maison  >  Article  >  développement back-end  >  Vous guider étape par étape pour implémenter la découpe et modifier la couleur d'arrière-plan via l'interface d'appel Python

Vous guider étape par étape pour implémenter la découpe et modifier la couleur d'arrière-plan via l'interface d'appel Python

青灯夜游
青灯夜游avant
2022-10-21 20:03:594312parcourir

Vous guider étape par étape pour implémenter la découpe et modifier la couleur d'arrière-plan via l'interface d'appel Python

Parfois nous devons changer la couleur de fond de nos photos d'identité, et nous n'avons pas le temps d'aller au studio photo pour prendre des photos, et ce n'est pas facile de découper les photos avec PS, alors aujourd'hui je vais partagez avec vous comment utiliser Python pour découper les images et changer la couleur d'arrière-plan

1. Enregistrez un compte Baidu AI et créez une application de segmentation de portraits

  • Page d'accueil de segmentation de portraits Baidu : suivez les étapes pour vous inscrire, vous connecter et authentifier.

  • Trouvez l'analyse du corps humain sur la page d'accueil de la console

Vous guider étape par étape pour implémenter la découpe et modifier la couleur darrière-plan via linterface dappel Python

Créez une application

Vous guider étape par étape pour implémenter la découpe et modifier la couleur darrière-plan via linterface dappel Python

Vous pouvez y écrire ce que vous voulez, mais les nouveaux utilisateurs doivent obtenir des ressources gratuites, sinon ils ont gagné Je ne pourrai pas l'utiliser.

Vous guider étape par étape pour implémenter la découpe et modifier la couleur darrière-plan via linterface dappel Python

Une fois la création terminée, enregistrez les valeurs de la clé API et de la clé secrète dans la liste des applications, qui seront utilisées ultérieurement.

Vous guider étape par étape pour implémenter la découpe et modifier la couleur darrière-plan via linterface dappel Python

À ce stade, les tâches d'enregistrement d'un compte et de création d'une application sont terminées.

Vous guider étape par étape pour implémenter la découpe et modifier la couleur darrière-plan via linterface dappel Python

2 : Implémentation du code. 1. Présentez la bibliothèque

import os
import requests
import base64
import cv2
import numpy as np
from PIL import Image
from pathlib import Path

path = os.getcwd()
paths = list(Path(path).glob('*'))

2 Obtenez un jeton d'accès

def get_access_token():
    url = 'https://aip.baidubce.com/oauth/2.0/token'
    data = {
        'grant_type': 'client_credentials',  # 固定值
        'client_id': '替换成你的API Key',  # 在开放平台注册后所建应用的API Key
        'client_secret': '替换成你的Secret Key'  # 所建应用的Secret Key
    }
    res = requests.post(url, data=data)
    res = res.json()
    access_token = res['access_token']
    return access_token

Code principal

Si vous avez des questions sur l'article https://jq.qq. com/?_wv=1027&k=s5bZE0K3

def removebg():
    try:
        request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/body_seg"
        # 二进制方式打开图片文件
        f = open(name, 'rb')
        img = base64.b64encode(f.read())
        params = {"image":img}
        access_token = get_access_token()
        request_url = request_url + "?access_token=" + access_token
        headers = {'content-type': 'application/x-www-form-urlencoded'}
        response = requests.post(request_url, data=params, headers=headers)
        if response:
            res = response.json()["foreground"]
            png_name=name.split('.')[0]+".png"
            with open(png_name,"wb") as f:
                data = base64.b64decode(res)
                f.write(data)
            fullwhite(png_name) #png图片底色填充,视情况舍去
            png_jpg(png_name) #png格式转jpg,视情况舍去
            os.remove(png_name) #删除原png图片,视情况舍去
            print(name+"\t处理成功!")
    except Exception as e:
        pass

4. Remplissage de la couleur de fond de l'image

def fullwhite(png_name):
    im = Image.open(png_name)
    x,y = im.size
    try:
        p = Image.new('RGBA', im.size, (255,255,255))        # 使用白色来填充背景,视情况更改
        p.paste(im, (0, 0, x, y), im)
        p.save(png_name)
    except:
        pass
5. Compression de l'image

#compress_rate:数值越小照片越模糊
def resize(compress_rate = 0.5):
    im = Image.open(name)
    w, h = im.size
    im_resize = im.resize((int(w*compress_rate), int(h*compress_rate)))
    resize_w, resieze_h = im_resize.size
    #quality 代表图片质量,值越低越模糊
    im_resize.save(name)
    im.close()

6. formater en jpg

def get_size():
    size = os.path.getsize(name)
    return size / 1024

8. Fonction principale

def png_jpg(png_name):
    im = Image.open(png_name)
    bg=Image.new('RGB',im.size,(255,255,255))
    bg.paste(im)
    jpg_name = png_name.split('.')[0]+".jpg"
    #quality 代表图片质量,值越低越模糊
    bg.save(jpg_name,quality=70)
    im.close()

9. Code complet

Si vous avez des questions sur l'article, vous pouvez m'envoyer un message privé ou venir ici https://jq.qq.com /?_wv=1027&k=s5bZE0K3

if __name__ == '__main__':
    for i in paths:
        name = os.path.basename(i.name)
        if(name==os.path.basename(__file__)):
            continue
        size = get_size()
        ##照片压缩
        while size >=900:
            size = get_size()
            resize()   
        removebg()
        print(" ")

[Important] Précautions avant utilisation

1 Ce programme écrasera le fichier original, veuillez sauvegarder le fichier avant utilisation pour éviter la perte de données
2. Copiez le programme sur et Dans le même répertoire que les photos à traiter, double-cliquez sur le programme pour lancer

Rendu final

Image originale :

Vous guider étape par étape pour implémenter la découpe et modifier la couleur darrière-plan via linterface dappel Python

Rendu

Résumé

Vous guider étape par étape pour implémenter la découpe et modifier la couleur darrière-plan via linterface dappel PythonLe code ne compte pas C'est difficile. Il y a beaucoup de petits problèmes en cours de route. Par exemple, la taille de l'image ne peut pas dépasser 4 Mo, il faut donc compresser la photo, et il y a des problèmes comme les chemins. pour implémenter cette fonction !

D'accord, le partage d'aujourd'hui se termine ici ~

Vous guider étape par étape pour implémenter la découpe et modifier la couleur darrière-plan via linterface dappel Python

[Recommandations associées :

Tutoriel vidéo Python3]

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer