超简单使用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备份Mysql脚本
Aug 11 Python
python数据结构树和二叉树简介
Apr 29 Python
Python实现冒泡,插入,选择排序简单实例
Aug 18 Python
用Python制作简单的钢琴程序的教程
Apr 01 Python
Python高级特性切片(Slice)操作详解
Sep 27 Python
Python实现的读取文件内容并写入其他文件操作示例
Apr 09 Python
Python qqbot 实现qq机器人的示例代码
Jul 11 Python
django写用户登录判定并跳转制定页面的实例
Aug 21 Python
Python单元测试模块doctest的具体使用
Feb 10 Python
python实现小程序推送页面收录脚本
Apr 20 Python
pandas 像SQL一样使用WHERE IN查询条件说明
Jun 05 Python
解决阿里云邮件发送不能使用25端口问题
Aug 07 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 REMOTE_ADDR之获取访客IP的代码
2008/04/22 PHP
destoon二次开发入门示例
2014/06/20 PHP
php实现转换html格式为文本格式的方法
2016/05/16 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
JavaScript 全角转半角部分
2009/10/28 Javascript
28个JS验证函数收集
2010/03/02 Javascript
ie与ff下的event事件使用介绍
2013/11/25 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
使用jquery菜单插件HoverTree仿京东无限级菜单
2014/12/18 Javascript
jquery实现页面关键词高亮显示的方法
2015/03/12 Javascript
jQuery+canvas实现的球体平抛及颜色动态变换效果
2016/01/28 Javascript
jQuery基于正则表达式的表单验证功能示例
2017/01/21 Javascript
Vue实现百度下拉提示搜索功能
2017/06/21 Javascript
基于Vue的延迟加载插件vue-view-lazy
2018/05/21 Javascript
Puppeteer 爬取动态生成的网页实战
2018/11/14 Javascript
vue-cli history模式实现tomcat部署报404的解决方式
2019/09/06 Javascript
JavaScript 引用类型实例详解【数组、对象、严格模式等】
2020/05/13 Javascript
[01:32]寻找你心中的那团火 DOTA2 TI9火焰传递活动今日开启
2019/05/16 DOTA
Python中摘要算法MD5,SHA1简介及应用实例代码
2018/01/09 Python
浅析Python 读取图像文件的性能对比
2019/03/07 Python
python实现多进程按序号批量修改文件名的方法示例
2019/12/30 Python
Selenium启动Chrome时配置选项详解
2020/03/18 Python
Python如何获取文件路径/目录
2020/09/22 Python
Python 创建守护进程的示例
2020/09/29 Python
python录音并调用百度语音识别接口的示例
2020/12/01 Python
佳能加拿大网上商店:Canon eStore Canada
2018/04/04 全球购物
品恩科技软件测试面试题
2014/10/26 面试题
中专生自荐信
2013/10/12 职场文书
《生命的药方》教学反思
2014/04/08 职场文书
酒店管理毕业生自荐信
2014/05/25 职场文书
寒山寺导游词
2015/02/03 职场文书
元宵节寄语大全
2015/02/27 职场文书
2015年民兵整组工作总结
2015/07/24 职场文书
《浅水洼里的小鱼》教学反思
2016/02/16 职场文书
golang interface判断为空nil的实现代码
2021/04/24 Golang
MySQL 自定义变量的概念及特点
2021/05/13 MySQL