超简单使用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对指定目录下文件进行批量重命名的方法
Apr 18 Python
python使用wmi模块获取windows下的系统信息 监控系统
Oct 27 Python
Python 类与元类的深度挖掘 II【经验】
May 06 Python
解决Python中字符串和数字拼接报错的方法
Oct 23 Python
Python 专题一 函数的基础知识
Mar 16 Python
基于ID3决策树算法的实现(Python版)
May 31 Python
flask中的wtforms使用方法
Jul 21 Python
Python List列表对象内置方法实例详解
Oct 22 Python
Python实现屏幕录制功能的代码
Mar 02 Python
python能做哪方面的工作
Jun 15 Python
如何利用pygame实现打飞机小游戏
May 30 Python
利用python实时刷新基金估值(摸鱼小工具)
Sep 15 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程序
2006/10/09 PHP
PHP导出MySQL数据到Excel文件(fputcsv)
2011/07/03 PHP
微信封装的调用微信签名包的类库
2017/06/08 PHP
php的优点总结 php有哪些优点
2019/07/19 PHP
PHP程序员简单的开展服务治理架构操作详解(三)
2020/05/14 PHP
24款非常有用的 jQuery 插件分享
2011/04/06 Javascript
jquery中常用的SET和GET$(”#msg”).html循环介绍
2013/10/09 Javascript
iframe实用操作锦集
2014/04/22 Javascript
jquery中ajax使用error调试错误的方法
2015/02/08 Javascript
js仿土豆网带缩略图的焦点图片切换效果实现方法
2015/02/23 Javascript
javascript中DOM复选框选择用法实例
2015/05/14 Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
2016/10/08 Javascript
node+express制作爬虫教程
2016/11/11 Javascript
jQuery插件autocomplete使用详解
2017/02/04 Javascript
深入浅析AngularJS中的一次性数据绑定 (bindonce)
2017/05/11 Javascript
js读取本地文件的实例
2017/12/22 Javascript
node-red File读取好保存实例讲解
2019/09/11 Javascript
JS代码优化的8点建议
2020/02/04 Javascript
Python利用QQ邮箱发送邮件的实现方法(分享)
2017/06/09 Python
提升Python程序性能的7个习惯
2019/04/14 Python
浅析matlab中imadjust函数
2020/02/27 Python
python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例
2020/03/04 Python
Django 构建模板form表单的两种方法
2020/06/14 Python
python 用opencv实现霍夫线变换
2020/11/27 Python
css3的focus-within选择器的使用
2020/05/11 HTML / CSS
美国职棒大联盟官方网上商店:MLBShop.com
2017/11/12 全球购物
丝芙兰新加坡官网:Sephora新加坡
2018/12/04 全球购物
英国户外服装品牌:Craghoppers
2019/04/25 全球购物
explicit和implicit的含义
2012/11/15 面试题
工业学校毕业生自荐书
2014/01/03 职场文书
科技开发中心办公室主任岗位责任制
2014/02/10 职场文书
研发工程师岗位职责
2014/04/28 职场文书
安全生产一岗双责责任书
2014/07/28 职场文书
2015元旦标语横幅
2014/12/09 职场文书
周恩来的四个昼夜观后感
2015/06/03 职场文书
详解python的异常捕获
2022/03/03 Python