本篇介绍的换脸方法我们借助于第三方 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 代码即可实现换脸功能相关推荐

  1. 100个必会的python脚本-100行Python代码实现自动抢火车票(附源码)

    前言 又要过年了,今年你不妨自己写一段代码来抢回家的火车票,是不是很Cool.下面话不多说了,来一起看看详细的介绍吧. 先准备好: 12306网站用户名和密码 chrome浏览器及下载chromedr ...

  2. c语言微信挑一挑编程,100行python代码实现微信跳一跳辅助程序

    写在前面 分享一下今天下午用python写的"跳一跳"小游戏的辅助程序.之前是准备用树莓派操控一个"机械手指"来代替人的触摸操作,但该方案还在酝酿中,实现了再分 ...

  3. 100行python代码做一个程序_100行python代码实现微信跳一跳辅助程序

    写在前面 分享一下今天下午用python写的"跳一跳"小游戏的辅助程序.之前是准备用树莓派操控一个"机械手指"来代替人的触摸操作,但该方案还在酝酿中,实现了再分 ...

  4. python模拟别人说话的声音_如何用100行Python代码做出魔性声控游戏“八分音符酱”...

    最近几天,一款魔性的小游戏在微博上刷屏了,各大平台的主播也纷纷如感染病毒一样直播自己怎么玩这个游戏(被游戏玩). 这个游戏叫做<不要停!八分音符酱♪>.它是一款来自岛国的恶搞游戏,主角是一 ...

  5. python电子相册制作代码大全_20 行 Python 代码即可制作精美证件照

    无论是我们上学时还之后的工作中,基本都需要用到电子证件照片,这类照片基本都对照片尺寸.背景色有要求,本文我们来看一下如何只用不到 20 行 Python 代码完成证件照片的制作. 简介 制作证件照我们 ...

  6. 100行python代码实现五子棋-教程

    五子棋是是一种两人对弈的纯策略型棋类游戏. 五子棋有两种玩法.玩法一:双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连线者获胜.玩法二:自己形成五子连线就替换对方任意一枚棋子.被 ...

  7. 不到 20 行 Python 代码即可制作精美证件照!不需要去图文店了!

    无论是我们上学时还之后的工作中,基本都需要用到电子证件照片,这类照片基本都对照片尺寸.背景色有要求,本文我们来看一下如何只用不到 20 行 Python 代码完成证件照片的制作. 简介 制作证件照我们 ...

  8. 用 不到 20 行 Python 代码即可制作 精美证件照

    无论是我们上学时还之后的工作中,基本都需要用到电子证件照片,这类照片基本都对照片尺寸.背景色有要求,本文我们来看一下如何只用不到 20 行 Python 代码完成证件照片的制作. 相关文件 小伙伴们可 ...

  9. python100行代码程序-100行python代码,轻松完成贪吃蛇小游戏

    大家小时候都玩过贪吃蛇吧?小编小时候可喜欢拿爸妈的手机玩了,厉害着呢!今天,小编就来用100行代码实现一个简易版的贪吃蛇.在网上,贪吃蛇教程蛮多的,但要安装蛮多库的,而且也不够清晰,今天的代码比较短, ...

最新文章

  1. 3550配置DHCP
  2. 遵循学术写作的九步骤,让写论文变成一件简单的事
  3. Lua table(表)
  4. 史上最快消息内核——ZeroMQ
  5. 01-JAVA语言基础
  6. debug模式的开关与功能 django
  7. 新手常见的python报错及解决方案
  8. 全网最全MATLAB学习归纳总结(建模学习必备)
  9. html企业微信发送消息,通过企业微信API接口发送消息到个人微信
  10. 内存映射机制(mmap)
  11. astah新建一个项目_Astah SysML
  12. [137]win10想开测试模式,提示“设置元素数据时出错
  13. 景点门票销售系统系统java_《基于WEB的景点门票销售系统》.doc
  14. js msgbox 插件
  15. 企业如何管理终端软件安装
  16. HDU_1847 Good Luck in CET-4 Everybody!
  17. 异构数据统一管理推动存储资源盘活
  18. go基础之map-迭代(四)
  19. 雷神笔记本做java,八代酷睿+144Hz电竞屏 雷神迎来新911黑幽灵游戏本评测
  20. 01 TVM环境编译

热门文章

  1. mysql联合索失效_mysql联合索引注意事项,解决为啥联合索引无效的问题
  2. asp之小旋风服务器
  3. 关于辽大信息学院选导师的一点儿心得
  4. 解决问题:import torch失败和torch.cuda.is_available()返回false
  5. 音视频基础知识——素材理解
  6. 如何裁剪视频画面尺寸?快把这些方法收好
  7. 阿里云ECS学生成长计划续费资格考试
  8. Python小游戏:BMI指数的计算
  9. ASP.NET 权限管理 页面静态化 OA系统培训 三层架构
  10. stm32+esp8266 GET请求心知天气的简单方法