超简单使用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自动化测试实例解析
Sep 28 Python
Python编程入门之Hello World的三种实现方式
Nov 13 Python
Ubuntu下安装PyV8
Mar 13 Python
Python解决八皇后问题示例
Apr 22 Python
python将一个英文语句以单词为单位逆序排放的方法
Dec 20 Python
jupyter notebook中新建cell的方法与快捷键操作
Apr 22 Python
浅谈TensorFlow中读取图像数据的三种方式
Jun 30 Python
Python容器类型公共方法总结
Aug 19 Python
详解Anaconda安装tensorflow报错问题解决方法
Nov 01 Python
python 根据列表批量下载网易云音乐的免费音乐
Dec 03 Python
用python实现一个简单的验证码
Dec 09 Python
Python如何利用正则表达式爬取网页信息及图片
Apr 17 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
Discuz板块横排显示图片的实现方法
2007/05/28 PHP
深入探讨PHP中的内存管理问题
2011/08/31 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
2015/06/19 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
2016/02/26 PHP
php通过curl添加cookie伪造登陆抓取数据的方法
2016/04/02 PHP
PHP AjaxForm提交图片上传并显示图片源码
2016/11/29 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
基于laravel belongsTo使用详解
2019/10/18 PHP
Jquery 1.42 checkbox 全选和反选代码
2010/03/27 Javascript
node.js 一个简单的页面输出实现代码
2012/03/07 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
2014/11/13 Javascript
JavaScript实现上下浮动的窗口效果代码
2015/10/12 Javascript
AngularJS基础 ng-non-bindable 指令详细介绍
2016/08/02 Javascript
jQuery点击弹出层弹出模态框点击模态框消失代码分享
2017/01/21 Javascript
jQuery模拟淘宝购物车功能
2017/02/27 Javascript
微信小程序实现图片压缩功能
2018/01/26 Javascript
通过vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题
2018/04/08 Javascript
javascript实现自由编辑图片代码详解
2019/06/21 Javascript
微信小程序 select 下拉框组件功能
2019/09/09 Javascript
jquery实现上传文件进度条
2020/03/26 jQuery
JS中FileReader类实现文件上传及时预览功能
2020/03/27 Javascript
基于PHP pthreads实现多线程代码实例
2020/06/24 Javascript
以一段代码为实例快速入门Python2.7
2015/03/31 Python
对python3 sort sorted 函数的应用详解
2019/06/27 Python
tensorflow2.0保存和恢复模型3种方法
2020/02/03 Python
Python自动发送和收取邮件的方法
2020/08/12 Python
html5 利用canvas手写签名并保存的实现方法
2018/07/12 HTML / CSS
浅谈h5自定义audio(问题及解决)
2016/08/19 HTML / CSS
草莓巧克力:Shari’s Berries
2017/02/07 全球购物
计算机专业个人求职自荐信
2013/09/21 职场文书
护士专业推荐信
2013/11/02 职场文书
幼儿园门卫制度
2014/01/29 职场文书
房产转让协议书(2014版)
2014/09/30 职场文书
婚礼女方父母答谢词
2015/01/04 职场文书
护林员个人总结
2015/03/04 职场文书
2015年大学组织委员个人工作总结
2015/10/23 职场文书