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抓取某汽车网数据解析html存入excel示例
Dec 04 Python
Python Queue模块详解
Nov 30 Python
Python中用于去除空格的三个函数的使用小结
Apr 07 Python
python去除空格和换行符的实现方法(推荐)
Jan 04 Python
一份python入门应该看的学习资料
Apr 11 Python
python实现下载pop3邮件保存到本地
Jun 19 Python
python 批量修改/替换数据的实例
Jul 25 Python
Python实现的列表排序、反转操作示例
Mar 13 Python
Python3.4解释器用法简单示例
Mar 22 Python
Python编程中类与类的关系详解
Aug 08 Python
PyCharm 专业版安装图文教程
Feb 20 Python
Python标准库pathlib操作目录和文件
Nov 20 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
超神学院:鹤熙已踏入神圣领域,实力不比凯莎弱
2020/03/02 国漫
Windows 下的 PHP-PEAR 安装方法
2010/11/20 PHP
php学习笔记 面向对象中[接口]与[多态性]的应用
2011/06/16 PHP
PHP文章采集URL补全函数(FormatUrl)
2012/08/02 PHP
JavaScript中Object和Function的关系小结
2009/09/26 Javascript
jQuery将多条数据插入模态框的示例代码
2014/09/25 Javascript
jQuery中delegate()方法用法实例
2015/01/19 Javascript
使用mouse事件实现简单的鼠标经过特效
2015/01/30 Javascript
JS实现从连接中获取youtube的key实例
2015/07/02 Javascript
第一次接触神奇的Bootstrap
2016/10/14 Javascript
微信小程序侧边栏滑动特效(左右滑动)
2017/01/23 Javascript
JavaScript 函数节流详解及方法总结
2017/02/09 Javascript
Angular JS 生成动态二维码的方法
2017/02/23 Javascript
Node.js中看JavaScript的引用
2017/04/22 Javascript
JavaScript数组去重算法实例小结
2018/05/07 Javascript
详解extract-text-webpack-plugin 的使用及安装
2018/06/12 Javascript
详解小程序开发经验:多页面数据同步
2019/05/18 Javascript
Vue 2.0 中依赖注入 provide/inject组合实战
2019/06/20 Javascript
VUEX-action可以修改state吗
2019/11/19 Javascript
vue-cli3自动消除console.log()的调试信息方式
2020/10/21 Javascript
基于python中pygame模块的Linux下安装过程(详解)
2017/11/09 Python
python-序列解包(对可迭代元素的快速取值方法)
2019/08/24 Python
Pytorch mask_select 函数的用法详解
2020/02/18 Python
美国设计师精美珠宝购物网:Netaya
2016/08/28 全球购物
爱尔兰电子产品购物网站:Komplett.ie
2018/04/04 全球购物
C#可否对内存进行直接的操作
2015/02/26 面试题
高中毕业生生活的自我评价
2013/12/08 职场文书
2014年重阳节老干部座谈会上的讲话稿
2014/09/25 职场文书
自愿离婚协议书2015
2015/01/26 职场文书
五四青年节活动总结
2015/02/10 职场文书
教师求职简历自我评价
2015/03/10 职场文书
罚款通知怎么写
2015/04/22 职场文书
建党伟业电影观后感
2015/06/01 职场文书
2016社区平安家庭事迹材料
2016/02/26 职场文书
react 路由Link配置详解
2021/11/11 Javascript
MySql如何将查询的出来的字段进行转换
2022/06/14 MySQL