超简单使用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 相关文章推荐
Python3基础之list列表实例解析
Aug 13 Python
Python中的迭代器与生成器高级用法解析
Jun 28 Python
Python使用当前时间、随机数产生一个唯一数字的方法
Sep 18 Python
Python 获得命令行参数的方法(推荐)
Jan 24 Python
python排序函数sort()与sorted()的区别
Sep 18 Python
Python随机生成身份证号码及校验功能
Dec 04 Python
对pandas处理json数据的方法详解
Feb 08 Python
pandas DataFrame 行列索引及值的获取的方法
Jul 02 Python
Python装饰器实现方法及应用场景详解
Mar 26 Python
在pycharm中debug 实时查看数据操作(交互式)
Jun 09 Python
python有几个版本
Jun 17 Python
PyTorch梯度裁剪避免训练loss nan的操作
May 24 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
使用php4加速网络传输
2006/10/09 PHP
在PHP中使用与Perl兼容的正则表达式
2006/11/26 PHP
在PHP上显示JFreechart画的统计图方法
2013/11/03 PHP
PHP弱类型的安全问题详细总结
2016/09/25 PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
2019/04/10 PHP
Jquery刷新页面背景图片随机变换的实现方法
2013/03/15 Javascript
获取input标签的所有属性的方法
2016/06/28 Javascript
jQuery中slidedown与slideup方法用法示例
2016/09/16 Javascript
Java  Spring 事务回滚详解
2016/10/17 Javascript
微信小程序 教程之模块化
2016/10/17 Javascript
node.js爬虫爬取拉勾网职位信息
2017/03/14 Javascript
mpvue中配置vuex并持久化到本地Storage图文教程解析
2018/03/15 Javascript
jQuery获取随机颜色的实例代码
2018/05/21 jQuery
VUE安装使用教程详解
2019/06/03 Javascript
如何利用Node.js与JSON搭建简单的动态服务器
2020/06/16 Javascript
微信小程序上传帖子的实例代码(含有文字图片的微信验证)
2020/07/11 Javascript
在vue中动态修改css其中一个属性值操作
2020/12/07 Vue.js
python如何查看系统网络流量的信息
2016/09/12 Python
Python最火、R极具潜力 2017机器学习调查报告
2017/12/11 Python
Python3 main函数使用sys.argv传入多个参数的实现
2019/12/25 Python
jupyternotebook 撤销删除的操作方式
2020/04/17 Python
python实现五子棋程序
2020/04/24 Python
keras训练浅层卷积网络并保存和加载模型实例
2020/07/02 Python
Python collections模块的使用方法
2020/10/09 Python
基于Python的图像阈值化分割(迭代法)
2020/11/20 Python
解决pycharm不能自动保存在远程linux中的问题
2021/02/06 Python
意大利一家专营包包和配饰的网上商店:Borse Last Minute
2019/08/26 全球购物
阿里巴巴的Oracle DBA笔试题答案-SQL tuning类
2016/04/03 面试题
Python中如何定义一个函数
2016/09/06 面试题
一年级学生评语大全
2014/04/21 职场文书
集中整治工作方案
2014/05/01 职场文书
团支部推优材料
2014/05/21 职场文书
倡议书格式
2014/08/30 职场文书
群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
幼儿园大班教师个人工作总结
2015/02/05 职场文书
2016幼儿教师自荐信范文
2016/01/28 职场文书