不到 100 行 Python 代码即可实现换脸功能
本篇介绍的换脸方法我们借助于第三方 Face++的API 来实现,我们通过的 API 接口提供方是 Face++官网,首先我们需要到该网站注册一个自己的账号。
Face++官网:https://console.faceplusplus.com.cn/register
打开后如下所示:
我们可以通过手机号和邮箱两种方式来注册,注册好账号之后,我们再进行登录,登录之后,我们要找到API Key点进去,如下图所示:
点击创建API Key进去
里面东西可以随便填写(正式的要钱,测试玩玩用试用就好)
创建之后就有api_key和api_secret了
有api_key和api_secret后,我们将下面的代码写入pycharm解释器里面,如果没有安装的可以看我之前的文章:最详细的anaconda+python+pycharm安装
代码如下:
import requests, simplejson, json, base64# 获取人脸关键点
def find_face(imgpath):print("正在查找……")http_url = "https://api-cn.faceplusplus.com/facepp/v3/detect"data = {"api_key": "xxxxx", ##替换掉‘你的api_key’,不要删除双引号,下面同理"api_secret": "xxxxx",##替换掉‘你的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)#print(this_json2)faces = this_json2['faces']list0 = faces[0]rectangle = list0['face_rectangle']# print(rectangle)return rectangle# 换脸,图片的大小应不超过 2M,number 表示换脸的相似度
def merge_face(image_url1, image_url2, image_url, number):ff1 = find_face(image_url1)ff2 = find_face(image_url2)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'])print(rectangle2)url_add = "https://api-cn.faceplusplus.com/imagepp/v1/mergeface"f1 = open(image_url1, 'rb')f1_64 = base64.b64encode(f1.read())f1.close()f2 = open(image_url2, 'rb')f2_64 = base64.b64encode(f2.read())f2.close()data = {"api_key": "xxxxx", ##替换掉‘你的api_key’"api_secret": "xxxxxx",##替换掉‘你的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_con1 = response.content.decode('utf-8')req_dict = json.JSONDecoder().decode(req_con1)result = req_dict['result']imgdata = base64.b64decode(result)file = open(image_url, 'wb')file.write(imgdata)file.close()image1 = r"1.jpg" ##原始照片1的路径,若为/.png格式则将‘jpg’改为‘png’,下面同理
image2 = r"1.png" ##原始照片2的路径;→将照片1 的五官加在照片2上;
image = r"新生成图片.jpg" ##生成的新照片merge_face(image2, image1, image, 90)
记得替换调里面的api_key和api_secret记得替换
效果如下:
以上所述是小编给大家介绍的python代码实现换脸功能,大家可以多多尝试,有可能有一些脸部是不太能对上的。希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。
不到 100 行 Python 代码即可实现换脸功能相关推荐
- 100个必会的python脚本-100行Python代码实现自动抢火车票(附源码)
前言 又要过年了,今年你不妨自己写一段代码来抢回家的火车票,是不是很Cool.下面话不多说了,来一起看看详细的介绍吧. 先准备好: 12306网站用户名和密码 chrome浏览器及下载chromedr ...
- c语言微信挑一挑编程,100行python代码实现微信跳一跳辅助程序
写在前面 分享一下今天下午用python写的"跳一跳"小游戏的辅助程序.之前是准备用树莓派操控一个"机械手指"来代替人的触摸操作,但该方案还在酝酿中,实现了再分 ...
- 100行python代码做一个程序_100行python代码实现微信跳一跳辅助程序
写在前面 分享一下今天下午用python写的"跳一跳"小游戏的辅助程序.之前是准备用树莓派操控一个"机械手指"来代替人的触摸操作,但该方案还在酝酿中,实现了再分 ...
- python模拟别人说话的声音_如何用100行Python代码做出魔性声控游戏“八分音符酱”...
最近几天,一款魔性的小游戏在微博上刷屏了,各大平台的主播也纷纷如感染病毒一样直播自己怎么玩这个游戏(被游戏玩). 这个游戏叫做<不要停!八分音符酱♪>.它是一款来自岛国的恶搞游戏,主角是一 ...
- python电子相册制作代码大全_20 行 Python 代码即可制作精美证件照
无论是我们上学时还之后的工作中,基本都需要用到电子证件照片,这类照片基本都对照片尺寸.背景色有要求,本文我们来看一下如何只用不到 20 行 Python 代码完成证件照片的制作. 简介 制作证件照我们 ...
- 100行python代码实现五子棋-教程
五子棋是是一种两人对弈的纯策略型棋类游戏. 五子棋有两种玩法.玩法一:双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连线者获胜.玩法二:自己形成五子连线就替换对方任意一枚棋子.被 ...
- 不到 20 行 Python 代码即可制作精美证件照!不需要去图文店了!
无论是我们上学时还之后的工作中,基本都需要用到电子证件照片,这类照片基本都对照片尺寸.背景色有要求,本文我们来看一下如何只用不到 20 行 Python 代码完成证件照片的制作. 简介 制作证件照我们 ...
- 用 不到 20 行 Python 代码即可制作 精美证件照
无论是我们上学时还之后的工作中,基本都需要用到电子证件照片,这类照片基本都对照片尺寸.背景色有要求,本文我们来看一下如何只用不到 20 行 Python 代码完成证件照片的制作. 相关文件 小伙伴们可 ...
- python100行代码程序-100行python代码,轻松完成贪吃蛇小游戏
大家小时候都玩过贪吃蛇吧?小编小时候可喜欢拿爸妈的手机玩了,厉害着呢!今天,小编就来用100行代码实现一个简易版的贪吃蛇.在网上,贪吃蛇教程蛮多的,但要安装蛮多库的,而且也不够清晰,今天的代码比较短, ...
最新文章
- 3550配置DHCP
- 遵循学术写作的九步骤,让写论文变成一件简单的事
- Lua table(表)
- 史上最快消息内核——ZeroMQ
- 01-JAVA语言基础
- debug模式的开关与功能 django
- 新手常见的python报错及解决方案
- 全网最全MATLAB学习归纳总结(建模学习必备)
- html企业微信发送消息,通过企业微信API接口发送消息到个人微信
- 内存映射机制(mmap)
- astah新建一个项目_Astah SysML
- [137]win10想开测试模式,提示“设置元素数据时出错
- 景点门票销售系统系统java_《基于WEB的景点门票销售系统》.doc
- js msgbox 插件
- 企业如何管理终端软件安装
- HDU_1847 Good Luck in CET-4 Everybody!
- 异构数据统一管理推动存储资源盘活
- go基础之map-迭代(四)
- 雷神笔记本做java,八代酷睿+144Hz电竞屏 雷神迎来新911黑幽灵游戏本评测
- 01 TVM环境编译
热门文章
- mysql联合索失效_mysql联合索引注意事项,解决为啥联合索引无效的问题
- asp之小旋风服务器
- 关于辽大信息学院选导师的一点儿心得
- 解决问题:import torch失败和torch.cuda.is_available()返回false
- 音视频基础知识——素材理解
- 如何裁剪视频画面尺寸?快把这些方法收好
- 阿里云ECS学生成长计划续费资格考试
- Python小游戏:BMI指数的计算
- ASP.NET 权限管理 页面静态化 OA系统培训 三层架构
- stm32+esp8266 GET请求心知天气的简单方法