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上基于Markov链生成伪随机文本的教程
Apr 17 Python
Python使用pyh生成HTML文档的方法示例
Mar 10 Python
Python中的groupby分组功能的实例代码
Jul 11 Python
tensorflow使用神经网络实现mnist分类
Sep 08 Python
详解如何将python3.6软件的py文件打包成exe程序
Oct 09 Python
Python中shapefile转换geojson的示例
Jan 03 Python
python 实现GUI(图形用户界面)编程详解
Jul 17 Python
使用Pytorch来拟合函数方式
Jan 14 Python
20行Python代码实现视频字符化功能
Apr 13 Python
150行python代码实现贪吃蛇游戏
Apr 24 Python
python+selenium+chrome批量文件下载并自动创建文件夹实例
Apr 27 Python
接口自动化多层嵌套json数据处理代码实例
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
一个取得文件扩展名的函数
2006/10/09 PHP
php获取url字符串截取路径的文件名和扩展名的函数
2010/01/22 PHP
php 数组的一个悲剧?
2011/05/11 PHP
浅析php中jsonp的跨域实例
2013/06/21 PHP
php判断两个日期之间相差多少个月份的方法
2015/06/18 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
2017/03/25 PHP
thinkPHP实现的省市区三级联动功能示例
2017/05/05 PHP
PHP实现百度人脸识别
2019/05/06 PHP
PHP强制转化的形式整理
2020/05/22 PHP
通用JS事件写法实现代码
2009/01/07 Javascript
JS中Date日期函数中的参数使用介绍
2014/01/02 Javascript
js css 实现遮罩层覆盖其他页面元素附图
2014/09/22 Javascript
JQuery的常用选择器、过滤器、方法全面介绍
2016/05/25 Javascript
JS获取及验证开始结束日期的方法
2016/08/20 Javascript
微信小程序 两种滑动方式(横向滑动,竖向滑动)详细及实例代码
2017/01/13 Javascript
基于jQuery实现瀑布流页面
2017/04/11 jQuery
Vue-Router实现组件间跳转的三种方法
2017/11/07 Javascript
mac中利用NVM管理不同node版本的方法详解
2017/11/08 Javascript
ES2020让代码更优美的运算符 (?.) (??)
2021/01/04 Javascript
Python对列表中的各项进行关联详解
2017/08/15 Python
详解Python if-elif-else知识点
2018/06/11 Python
python组合无重复三位数的实例
2018/11/13 Python
Python多线程应用于自动化测试操作示例
2018/12/06 Python
python实现根据文件关键字进行切分为多个文件的示例
2018/12/10 Python
python操作日志的封装方法(两种方法)
2019/05/23 Python
Tensorflow 卷积的梯度反向传播过程
2020/02/10 Python
python中sympy库求常微分方程的用法
2020/04/28 Python
Python selenium使用autoIT上传附件过程详解
2020/05/26 Python
pandas统计重复值次数的方法实现
2021/02/20 Python
法国大使拉杆箱官网:DELSEY Paris
2018/03/20 全球购物
巴西最好的男鞋:Rafarillo
2018/05/25 全球购物
团组织关系介绍信
2014/01/12 职场文书
国贸专业的职业规划范文
2014/01/23 职场文书
市场营销专业自荐书
2014/06/10 职场文书
公司财务会计主管应聘求职信
2014/09/26 职场文书
人事代理委托书
2014/09/27 职场文书