超简单使用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列表操作使用示例分享
Feb 21 Python
python中查看变量内存地址的方法
May 05 Python
简单谈谈Python中的反转字符串问题
Oct 24 Python
浅谈用VSCode写python的正确姿势
Dec 16 Python
python实现大转盘抽奖效果
Jan 22 Python
人工神经网络算法知识点总结
Jun 11 Python
使用python制作一个为hex文件增加版本号的脚本实例
Jun 12 Python
解决使用python print打印函数返回值多一个None的问题
Apr 09 Python
完美解决keras 读取多个hdf5文件进行训练的问题
Jul 01 Python
浅谈Python爬虫原理与数据抓取
Jul 21 Python
Python如何爬取51cto数据并存入MySQL
Aug 25 Python
Python filter()及reduce()函数使用方法解析
Sep 05 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中异常处理的一些方法整理
2015/07/03 PHP
PHP使用php-resque库配合Redis实现MQ消息队列的教程
2016/06/29 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
js查找某元素中的所有图片地址的方法
2014/01/16 Javascript
JavaScript 浏览器对象模型BOM使用介绍
2015/04/13 Javascript
在jQuery中使用$而避免跟其它库产生冲突的方法
2015/08/13 Javascript
jQuery实现大转盘抽奖活动仿QQ音乐代码分享
2015/08/21 Javascript
JavaScript简单实现弹出拖拽窗口(一)
2016/06/17 Javascript
JS实现的适合做faq或menu滑动效果示例
2016/11/17 Javascript
详解vue-cli项目中用json-sever搭建mock服务器
2017/11/02 Javascript
JS写谷歌浏览器chrome的外挂实例
2018/01/11 Javascript
浅谈Vue.js 中的 v-on 事件指令的使用
2018/11/25 Javascript
react的滑动图片验证码组件的示例代码
2019/02/27 Javascript
从零开始在vue-cli4配置自适应vw布局的实现
2020/06/08 Javascript
通过实例解析vuejs如何实现调试代码
2020/07/16 Javascript
[03:14]辉夜杯主赛事 12月25日每日之星
2015/12/26 DOTA
讲解Python中if语句的嵌套用法
2015/05/14 Python
Python的numpy库中将矩阵转换为列表等函数的方法
2018/04/04 Python
对python列表里的字典元素去重方法详解
2019/01/21 Python
scrapy利用selenium爬取豆瓣阅读的全步骤
2020/09/20 Python
python实现在列表中查找某个元素的下标示例
2020/11/16 Python
Pycharm 解决自动格式化冲突的设置操作
2021/01/15 Python
如何用用Python将地址标记在地图上
2021/02/07 Python
viagogo意大利票务平台:演唱会、体育比赛、戏剧门票
2018/01/26 全球购物
Snapfish爱尔兰:在线照片打印和个性化照片礼品
2018/09/17 全球购物
在线吉他课程,学习如何弹吉他:Fender Play
2019/02/28 全球购物
教育局长自荐信范文
2013/12/22 职场文书
企业演讲稿范文
2013/12/28 职场文书
竞赛口号大全
2014/06/16 职场文书
会计学毕业生求职信
2014/06/25 职场文书
2014年辅导员工作总结
2014/11/18 职场文书
安全生产先进个人总结
2015/02/15 职场文书
毕业论文致谢怎么写
2015/05/14 职场文书
休学证明范本
2015/06/19 职场文书
html5调用摄像头截图功能
2022/01/18 Javascript
TV动画《间谍过家家》公开PV
2022/03/20 日漫