您当前的位置: 首页 >  Python

嗨学编程

暂无认证

  • 0浏览

    0关注

    1405博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Python史诗级P图换脸小程序,AI换脸的简易版

嗨学编程 发布时间:2019-11-05 16:17:26 ,浏览量:0

用python实现换脸, 我们需要使用第三方的api接口,这里我们需要提前注册一个帐号,获取到相应的key和secret ,注册网址如下:

www.faceplusplus.com

然后准备两张图片,分别为1.jpg和2.jpg ,本次我们需要实现的目标就是将图1上的人脸换成与图2非常相似的人脸,生成新的图片,就叫做3.jpg吧

实现代码
import requests
import json
import os
import re
import base64
import simplejson
'''
python学习交流群:1136201545更多学习资料可以加群获取
'''
key='你的key'
secret='你的密钥'

#获取图片的人脸特征参数
def find_face(imgpath):
    url='https://api-cn.faceplusplus.com/facepp/v3/detect'
    data = {'api_key':key,'api_secret':secret,'image_url':imgpath,'return_landmark':1}
    files = {'image_file':open(imgpath,'rb')}
    response = requests.post(url,data=data,files=files)
    res_json = response.json()
    faces = res_json['faces'][0]['face_rectangle']    #获取面部大小的四个值,分别为长宽高低{'width': 176, 'top': 128, 'left': 80, 'height': 176}
    return faces


#换脸,函数传参中number表示两张脸的相似度为99%
def change_face(image_1,image_2,number=99):
    url = "https://api-cn.faceplusplus.com/imagepp/v1/mergeface"
    find_p1 = find_face(image_1)
    find_p2 = find_face(image_2)
    rectangle1 = str(str(find_p1['top'])+','+str(find_p1['left'])+','+str(find_p1['width'])+','+str(find_p1['height']))   #得到一个坐标
    rectangle2 = str(str(find_p2['top'])+','+str(find_p2['left'])+','+str(find_p2['width'])+','+str(find_p2['height']))
    
    page1 = open(image_1,'rb')      #以二进制打开图片1
    page1_64 = base64.b64encode(page1.read())    #将字符串转成成base64编码
    page1.close()

    page2 = open(image_2,'rb')
    page2_64 = base64.b64encode(page2.read())
    page2.close()

    data = {'api_key':key,'api_secret':secret,'template_base64':page1_64,
    'template_rectangle':rectangle1,'merge_base64':page2_64,'merge_rectangele':rectangle2,'merge_rate':number}
    response = requests.post(url,data=data).json()
    results = response['result']
    image = base64.b64decode(results)
    with open('3.jpg','wb') as file:
        file.write(image)
    print(response)

if __name__ == '__main__':
        change_face('1.jpg','2.jpg')

执行上面的代码 , 我们来看一下结果,中间那张图,则是我们换脸之后的图 在这里插入图片描述

关注
打赏
1663681728
查看更多评论
立即登录/注册

微信扫码登录

0.0830s