Python实现AI换脸功能


Posted in Python onApril 10, 2020

需要用到的接口:

获取人脸信息的接口:https://api-cn.faceplusplus.com/facepp/v3/detect

实现换脸的接口 :https://api-cn.faceplusplus.com/imagepp/v1/mergeface

代码分为三步

代码:

import requests
import json
import simplejson
import base64

#第一步:获取人脸关键点
def find_face(imgpath):
 """
 :param imgpath: 图片的地址
 :return: 一个字典类型的人脸关键点 如:{'top': 156, 'left': 108, 'width': 184, 'height': 184}
 """
 http_url = 'https://api-cn.faceplusplus.com/facepp/v3/detect' #获取人脸信息的接口
 data = {
 "api_key":"x2NyKaa6vYuArYwat4x0-NpIbM9CrwGU",#访问url所需要的参数
 "api_secret":"OuHx-Xaey1QrORwdG7QetGG5JhOIC8g7",#访问url所需要的参数
 "image_url":imgpath, #图片地址
 "return_landmark":1
 }


 files = {'image_file':open(imgpath,'rb')} #定义一个字典存放图片的地址
 response = requests.post(http_url,data=data,files=files)
 res_con1 = response.content.decode('utf-8')
 res_json = simplejson.loads(res_con1)
 faces = res_json['faces']
 list = faces[0]
 rectangle = list['face_rectangle']
 return rectangle

#第二步:实现换脸
def merge_face(image_url1,image_url2,image_url,number):
 """
 :param image_url1: 被换脸的图片路径
 :param image_url2: 换脸的图片路径
 :param image_url: 换脸后生成图片所保存的路径
 :param number: 换脸的相似度
 """
 #首先获取两张图片的人脸关键点
 face1 = find_face(image_url1)
 face2 = find_face(image_url2)
 #将人脸转换为字符串的格式
 rectangle1 = str(str(face1['top']) + "," + str(face1['left']) + "," + str(face1['width']) + "," + str(face1['height']))
 rectangle2 = str(str(face2['top']) + "," + str(face2['left']) + "," + str(face2['width']) + "," + str(face2['height']))
 #读取两张图片
 f1 = open(image_url1,'rb')
 f1_64 = base64.b64encode(f1.read())
 f1.close()
 f2 = open(image_url2, 'rb')
 f2_64 = base64.b64encode(f2.read())
 f2.close()

 url_add = 'https://api-cn.faceplusplus.com/imagepp/v1/mergeface' #实现换脸的接口
 data={
 "api_key": "x2NyKaa6vYuArYwat4x0-NpIbM9CrwGU",
 "api_secret": "OuHx-Xaey1QrORwdG7QetGG5JhOIC8g7",
 "template_base64":f1_64,
 "template_rectangle":rectangle1,
 "merge_base64":f2_64,
 "merge_rectangle":rectangle2,
 "merge_rate":number
 }
 response1 = requests.post(url_add,data=data)
 res_con1 = response1.content.decode('utf-8')
 res_dict = json.JSONDecoder().decode(res_con1)
 result = res_dict['result']
 imgdata = base64.b64decode(result)
 file=open(image_url,'wb')
 file.write(imgdata)
 file.close()

if __name__ == '__main__':
 image1 = r"meizi1.jpg"
 image2 = r"meizi.jpg"
 image3 = r"face1.jpg"
 merge_face(image1,image2,image3,100)

效果:

换脸前

Python实现AI换脸功能

要换的脸:

Python实现AI换脸功能

换脸后:

Python实现AI换脸功能

总结

到此这篇关于Python实现AI换脸的代码的文章就介绍到这了,更多相关Python实现AI换脸内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中optionParser模块的使用方法实例教程
Aug 29 Python
python回溯法实现数组全排列输出实例分析
Mar 17 Python
python获取当前日期和时间的方法
Apr 30 Python
整理Python中的赋值运算符
May 13 Python
python 读写、创建 文件的方法(必看)
Sep 12 Python
用Python实现KNN分类算法
Dec 22 Python
Python实现处理逆波兰表达式示例
Jul 30 Python
Python代码实现http/https代理服务器的脚本
Aug 12 Python
linux下python中文乱码解决方案详解
Aug 28 Python
python文件和文件夹复制函数
Feb 07 Python
详解django使用include无法跳转的解决方法
Mar 19 Python
django中websocket的具体使用
Jan 22 Python
python使用OpenCV模块实现图像的融合示例代码
Apr 10 #Python
Jupyter notebook运行Spark+Scala教程
Apr 10 #Python
Python HTMLTestRunner可视化报告实现过程解析
Apr 10 #Python
jupyter notebook清除输出方式
Apr 10 #Python
解决Python在导入文件时的FileNotFoundError问题
Apr 10 #Python
jupyter notebook参数化运行python方式
Apr 10 #Python
Python库skimage绘制二值图像代码实例
Apr 10 #Python
You might like
PHP实现对文本数据库的常用操作方法实例演示
2014/07/04 PHP
图文介绍PHP添加Redis模块及连接
2015/07/28 PHP
thinkphp实现分页显示功能
2016/12/03 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
摘自百度的图片轮换效果代码
2007/11/19 Javascript
MooTools 1.2介绍
2009/09/14 Javascript
jquery 多行滚动代码(附详细解释)
2010/06/17 Javascript
js delete 用法(删除对象属性及变量)
2014/08/24 Javascript
小程序清理本地缓存的方法
2018/08/17 Javascript
Vue高版本中一些新特性的使用详解
2018/09/25 Javascript
Node在Controller层进行数据校验的过程详解
2020/08/28 Javascript
python 图片验证码代码
2008/12/07 Python
Python Web框架Flask中使用百度云存储BCS实例
2015/02/08 Python
windows下python之mysqldb模块安装方法
2017/09/07 Python
Python读取Json字典写入Excel表格的方法
2018/01/03 Python
django项目中使用手机号登录的实例代码
2019/08/15 Python
Django多进程滚动日志问题解决方案
2019/12/17 Python
详解Python 最短匹配模式
2020/07/29 Python
荷兰电脑专场:Paradigit
2018/05/05 全球购物
美国亚洲时尚和美容产品的一站式网上商店:Stylevana
2019/09/05 全球购物
C语言编程练习
2012/04/02 面试题
企业为何需要商业计划书
2013/12/26 职场文书
英语专业学生的自我评价
2013/12/30 职场文书
高三政治教学反思
2014/02/06 职场文书
煤矿机修工岗位职责
2014/02/07 职场文书
电子信息工程自荐信
2014/05/26 职场文书
企业法人代表证明书
2014/09/27 职场文书
科长个人四风问题整改措施思想汇报
2014/10/13 职场文书
节约用电通知
2015/04/25 职场文书
社区党建工作总结2015
2015/05/13 职场文书
建国大业观后感800字
2015/06/01 职场文书
小孩不笨观后感
2015/06/03 职场文书
历史博物馆观后感
2015/06/05 职场文书
优秀教师主要事迹材料
2015/11/04 职场文书
HTML页面滚动时部分内容位置固定不滚动的实现
2021/04/14 HTML / CSS
MySQL实现配置主从复制项目实践
2022/03/31 MySQL