超简单使用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的Supervisor进行进程监控以及自动启动
May 29 Python
python实现字符串和日期相互转换的方法
May 13 Python
在Python的Django框架中获取单个对象数据的简单方法
Jul 17 Python
Python实现学校管理系统
Jan 11 Python
Python实现快速傅里叶变换的方法(FFT)
Jul 21 Python
python的pip安装以及使用教程
Sep 18 Python
python实现通过flask和前端进行数据收发
Aug 22 Python
pytorch下使用LSTM神经网络写诗实例
Jan 14 Python
keras的三种模型实现与区别说明
Jul 03 Python
在 Golang 中实现 Cache::remember 方法详解
Mar 30 Python
Python OpenCV超详细讲解读取图像视频和网络摄像头
Apr 02 Python
使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法
Apr 21 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代码收集表单内容并写入文件的代码
2012/01/29 PHP
php+xml编程之xpath的应用实例
2015/01/24 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
2015/12/21 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
2017/03/10 PHP
PHP解耦的三重境界(浅谈服务容器)
2017/03/13 PHP
php curl批处理实现可控并发异步操作示例
2018/05/09 PHP
JavaScript高级程序设计阅读笔记(六) ECMAScript中的运算符(二)
2012/02/27 Javascript
js判断文本框剩余可输入字数的方法
2015/02/04 Javascript
jquery中cookie用法实例详解(获取,存储,删除等)
2016/01/04 Javascript
学习JavaScript设计模式之状态模式
2016/01/08 Javascript
JQ选择器_选择同类元素的第N个子元素的实现方法
2016/09/08 Javascript
JS版微信6.0分享接口用法分析
2016/10/13 Javascript
Vue.JS入门教程之处理表单
2016/12/01 Javascript
微信小程序 es6-promise.js封装请求与处理异步进程
2017/06/12 Javascript
vue3.0 CLI - 2.2 - 组件 home.vue 的初步改造
2018/09/14 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变opacity实现)
2019/01/24 Javascript
完美解决vue 中多个echarts图表自适应的问题
2020/07/19 Javascript
vue监听dom大小改变案例
2020/07/29 Javascript
python 转换 Javascript %u 字符串为python unicode的代码
2016/09/06 Python
python安装PIL模块时Unable to find vcvarsall.bat错误的解决方法
2016/09/19 Python
python并发编程之线程实例解析
2017/12/27 Python
朴素贝叶斯Python实例及解析
2018/11/19 Python
详解Python logging调用Logger.info方法的处理过程
2019/02/12 Python
解决python pandas读取excel中多个不同sheet表格存在的问题
2020/07/14 Python
兰蔻加拿大官方网站:Lancome加拿大
2016/08/05 全球购物
法国太阳镜店:Sunglasses Shop
2016/08/27 全球购物
学前教育专业求职信
2014/09/02 职场文书
校园安全广播稿范文
2014/09/25 职场文书
2015年收银工作总结范文
2015/04/01 职场文书
2015年度保密工作总结
2015/04/24 职场文书
同学聚会感言一句话
2015/07/30 职场文书
爱国主义教育主题班会
2015/08/13 职场文书
2016年党支部公开承诺书
2016/03/25 职场文书
2019终止劳动合同协议书最新范本!
2019/07/09 职场文书
《学会生存》读后感3篇
2019/12/09 职场文书
HTML CSS 一个标签实现带动画的抖音LOGO
2022/04/26 HTML / CSS