超简单使用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实现爬虫抓取与读写、追加到excel文件操作示例
Jun 27 Python
python用pandas数据加载、存储与文件格式的实例
Dec 07 Python
对python中dict和json的区别详解
Dec 18 Python
Django数据库连接丢失问题的解决方法
Dec 29 Python
Python生成MD5值的两种方法实例分析
Apr 26 Python
Django继承自带user表并重写的例子
Nov 18 Python
Python内置加密模块用法解析
Nov 25 Python
Python实现密码薄文件读写操作
Dec 16 Python
python实现贪吃蛇双人大战
Apr 18 Python
Pycharm如何导入python文件及解决报错问题
May 10 Python
tensorflow 2.0模式下训练的模型转成 tf1.x 版本的pb模型实例
Jun 22 Python
python实现简单文件读写函数
Feb 25 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
将数组写入txt文件 var_export
2009/04/21 PHP
一个比较简单的PHP 分页分组类
2009/12/10 PHP
php中fsockopen用法实例
2015/01/05 PHP
10条php编程小技巧
2015/07/07 PHP
Laravel框架实现定时发布任务的方法
2018/08/16 PHP
JavaScript Cookie的读取和写入函数
2009/12/08 Javascript
JS 获取滚动条高度示例代码
2013/10/24 Javascript
javascript实现的简单的表单验证
2015/07/10 Javascript
JS碰撞运动实现方法详解
2016/12/15 Javascript
JS回调函数简单用法示例
2017/02/09 Javascript
使用Bootstrap + Vue.js实现添加删除数据示例
2017/02/27 Javascript
vue.js todolist实现代码
2017/10/29 Javascript
使用layui 渲染table数据表格的实例代码
2018/08/19 Javascript
vue同步父子组件和异步父子组件的生命周期顺序问题
2018/10/07 Javascript
Vue中使用Lodop插件实现打印功能的简单方法
2019/12/19 Javascript
[46:57]EG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python datetime时间格式化去掉前导0
2014/07/31 Python
如何利用Fabric自动化你的任务
2016/10/20 Python
Python开发的实用计算器完整实例
2017/05/10 Python
python计算两个地址之间的距离方法
2018/06/09 Python
python版opencv摄像头人脸实时检测方法
2018/08/03 Python
Python3获取拉勾网招聘信息的方法实例
2019/04/03 Python
Python魔术方法专题
2020/06/19 Python
Python描述数据结构学习之哈夫曼树篇
2020/09/07 Python
python实现图书馆抢座(自动预约)功能的示例代码
2020/09/29 Python
selenium+超级鹰实现模拟登录12306
2021/01/24 Python
css3弹性盒模型(Flexbox)详细介绍
2014/10/08 HTML / CSS
canvas进阶之贝塞尔公式推导与物体跟随复杂曲线的轨迹运动
2018/01/10 HTML / CSS
软件测试有哪些?什么是配置项?
2012/02/12 面试题
小学老师寄语大全
2014/04/04 职场文书
2014年最新版离婚协议书范本
2014/11/25 职场文书
美丽心灵观后感
2015/06/01 职场文书
小组口号霸气押韵
2015/12/24 职场文书
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
2021/06/11 Python
实操Python爬取觅知网素材图片示例
2021/11/27 Python
MySQL数据库表约束讲解
2022/06/21 MySQL