超简单使用Python换脸实例


Posted in Python onMarch 27, 2019

换脸!

这段时间,deepfakes搞得火热,比方说把《射雕英雄传》里的朱茵换成了杨幂,看下面的图!毫无违和感!

超简单使用Python换脸实例

其实早在之前,基于AI换脸的技术就得到了应用,比方说《速度与激情7》里面的演员保罗.沃克,由于发生意外,

后期的视频都是由他的兄弟完成拍摄,然后再对其换脸,最终也就是我们影院看到的效果。

当然,也有人把这项技术应用在其他的领域,例如把某种电影的女主换成了盖尔.加朵(《神奇女侠》的扮演者),,,

超简单使用Python换脸实例

这真的是对“技术是一把又刃剑”阐述的十分到位。。。

关于deepfakes这里不再详细说明,好吧,小编承认是来蹭热度的。。。

下面来介绍一种对照片的简单换脸方法。

本篇介绍的换脸方法需要借助Face++,关于Face++的API,大家可自行查看说明文档,都比较简单,小编在这里就不做具体

说明了:

文档地址:https://console.faceplusplus.com.cn/documents/20813963

1.配置工具:

pip install requests
pip install simplejson

2.获取Face++ api_key和secret

Face++网址:https://console.faceplusplus.com.cn/dashboard

3.换脸步骤

调用的库

import requests
import simplejson
import json
import base64

第一步,获取人脸关键点,代码如下说述:

def find_face(imgpath):
    
    print("finding")
    
    http_url = 'https://api-cn.faceplusplus.com/facepp/v3/detect'
    
    data = {"api_key": '自己申请',
        "api_secret": '自己申请', "image_url": imgpath, "return_landmark": 1}
    
    files = {"image_file": open(imgpath, "rb")}
    
    response = requests.post(http_url, data=data, files=files)
    
    req_con = response.content.decode('utf-8')
    
    req_dict = json.JSONDecoder().decode(req_con)
    
    this_json = simplejson.dumps(req_dict)
    
    this_json2 = simplejson.loads(this_json)
    
    faces = this_json2['faces']
    
    list0 = faces[0]
    
    rectangle = list0['face_rectangle']
    
    # print(rectangle)
    
    return rectangle

第二步,换脸,其中图片的大小应不超过2M,代码如下所述:

#number表示换脸的相似度
def merge_face(image_url_1,image_url_2,image_url,number):
    
    ff1 = find_face(image_url_1)
    
    ff2 = find_face(image_url_2)
 
    rectangle1 = str(str(ff1['top']) + "," + str(ff1['left']) + "," + str(ff1['width']) + "," + str(ff1['height']))
    
    rectangle2 = str(ff2['top']) + "," + str(ff2['left']) + "," + str(ff2['width']) + "," + str(ff2['height'])
 
    url_add = "https://api-cn.faceplusplus.com/imagepp/v1/mergeface"
 
    f1 = open(image_url_1, 'rb')
 
    f1_64 = base64.b64encode(f1.read())
    
    f1.close()
    
    f2 = open(image_url_2, 'rb')
    
    f2_64 = base64.b64encode(f2.read())
    
    f2.close()
 
    data = {"api_key": '自己申请', "api_secret": '自己申请',
        "template_base64": f1_64, "template_rectangle": rectangle1,
        "merge_base64": f2_64, "merge_rectangle": rectangle2, "merge_rate": number}
 
    response = requests.post(url_add, data=data)
 
    req_con = response.content.decode('utf-8')
 
    req_dict = json.JSONDecoder().decode(req_con)
 
    result = req_dict['result']
 
    imgdata = base64.b64decode(result)
 
    file = open(image_url, 'wb')
 
    file.write(imgdata)
 
    file.close()

测试

def test():
    
    image1 = r"F:\GXT.bmp"
    
    image2 = r"F:\MSC.bmp"
    
    image = r"F:\MEG.bmp"
    
    merge_face(image2,image1,image,90)

测试结果:

左图:关某某

右图:马某某

中图:MERGE

超简单使用Python换脸实例超简单使用Python换脸实例超简单使用Python换脸实例

以上所述是小编给大家介绍的Python换脸实例详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python实现的防DDoS脚本
Feb 08 Python
跟老齐学Python之Import 模块
Oct 13 Python
Python检测QQ在线状态的方法
May 09 Python
Python中对象迭代与反迭代的技巧总结
Sep 17 Python
解决uWSGI的编码问题详解
Mar 24 Python
python、java等哪一门编程语言适合人工智能?
Nov 13 Python
numpy的文件存储.npy .npz 文件详解
Jul 09 Python
python中正则表达式 re.findall 用法
Oct 23 Python
python对验证码降噪的实现示例代码
Nov 12 Python
python 录制系统声音的示例
Dec 21 Python
python绘制雷达图实例讲解
Jan 03 Python
Python开发五子棋小游戏
May 02 Python
python爬虫爬取微博评论案例详解
Mar 27 #Python
Python实现查找字符串数组最长公共前缀示例
Mar 27 #Python
详解python中@的用法
Mar 27 #Python
详解python列表生成式和列表生成式器区别
Mar 27 #Python
Python3实现的回文数判断及罗马数字转整数算法示例
Mar 27 #Python
详解Django项目中模板标签及模板的继承与引用(网站中快速布置广告)
Mar 27 #Python
python模块之subprocess模块级方法的使用
Mar 26 #Python
You might like
php仿discuz分页效果代码
2008/10/02 PHP
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
2012/08/09 PHP
解析php file_exists无效的解决办法
2013/06/26 PHP
[原创]CI(CodeIgniter)简单统计访问人数实现方法
2016/01/19 PHP
PHP将MySQL的查询结果转换为数组并用where拼接的示例
2016/05/13 PHP
PHP第三方登录―QQ登录实现方法
2017/02/06 PHP
PHP简单实现二维数组赋值与遍历功能示例
2017/10/19 PHP
Zero Clipboard js+swf实现的复制功能使用方法
2010/03/07 Javascript
jquery的Theme和Theme Switcher使用小结
2010/09/08 Javascript
对jQuery的事件绑定的一些思考(补充)
2013/04/20 Javascript
浅析js封装和作用域
2013/07/09 Javascript
影响jQuery使用的14个方面
2014/09/01 Javascript
jQuery中:checkbox选择器用法实例
2015/01/03 Javascript
JavaScript简单判断复选框是否选中及取出值的方法
2015/08/13 Javascript
js贪吃蛇网页版游戏特效代码分享(挑战十关)
2015/08/24 Javascript
原生javascript 学习之js变量全面了解
2016/07/14 Javascript
关于vue.js弹窗组件的知识点总结
2016/09/11 Javascript
微信小程序 loading 详解及实例代码
2016/11/09 Javascript
AngularJS修改model值时,显示内容不变的实例
2018/09/13 Javascript
对layui中table组件工具栏的使用详解
2019/09/19 Javascript
VUE+node(express)实现前后端分离
2019/10/13 Javascript
[47:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python新手经常遇到的17个错误分析
2014/07/30 Python
python服务器与android客户端socket通信实例
2014/11/12 Python
matplotlib作图添加表格实例代码
2018/01/23 Python
python3.4.3下逐行读入txt文本并去重的方法
2018/04/29 Python
一些Centos Python 生产环境的部署命令(推荐)
2018/05/07 Python
Python脚本操作Excel实现批量替换功能
2019/11/20 Python
计算pytorch标准化(Normalize)所需要数据集的均值和方差实例
2020/01/15 Python
用python绘制樱花树
2020/10/09 Python
Python中logging日志的四个等级和使用
2020/11/17 Python
详解CSS3的box-shadow属性制作边框阴影效果的方法
2016/05/10 HTML / CSS
元旦文艺汇演主持词
2014/03/26 职场文书
管理失职检讨书范文
2015/05/05 职场文书
史上最全的军训拉歌口号
2015/12/25 职场文书
Java代码规范与质量检测插件SonarLint的使用
2022/08/05 Java/Android