需要用到的接口:

获取人脸信息的接口:https://api-cn.faceplusplus.com/facepp/v3/detect

实现换脸的接口 :https://api-cn.faceplusplus.com/imagepp/v1/mergeface

代码分为三步

代码:

import requests

import json

import simplejson

import base64

#第一步:获取人脸关键点

def find_face(imgpath):

"""

:param imgpath: 图片的地址

:return: 一个字典类型的人脸关键点 如:{'top': 156, 'left': 108, 'width': 184, 'height': 184}

"""

http_url = 'https://api-cn.faceplusplus.com/facepp/v3/detect' #获取人脸信息的接口

data = {

"api_key":"x2NyKaa6vYuArYwat4x0-NpIbM9CrwGU",#访问url所需要的参数

"api_secret":"OuHx-Xaey1QrORwdG7QetGG5JhOIC8g7",#访问url所需要的参数

"image_url":imgpath, #图片地址

"return_landmark":1

}

files = {'image_file':open(imgpath,'rb')} #定义一个字典存放图片的地址

response = requests.post(http_url,data=data,files=files)

res_con1 = response.content.decode('utf-8')

res_json = simplejson.loads(res_con1)

faces = res_json['faces']

list = faces[0]

rectangle = list['face_rectangle']

return rectangle

#第二步:实现换脸

def merge_face(image_url1,image_url2,image_url,number):

"""

:param image_url1: 被换脸的图片路径

:param image_url2: 换脸的图片路径

:param image_url: 换脸后生成图片所保存的路径

:param number: 换脸的相似度

"""

#首先获取两张图片的人脸关键点

face1 = find_face(image_url1)

face2 = find_face(image_url2)

#将人脸转换为字符串的格式

rectangle1 = str(str(face1['top']) + "," + str(face1['left']) + "," + str(face1['width']) + "," + str(face1['height']))

rectangle2 = str(str(face2['top']) + "," + str(face2['left']) + "," + str(face2['width']) + "," + str(face2['height']))

#读取两张图片

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()

url_add = 'https://api-cn.faceplusplus.com/imagepp/v1/mergeface' #实现换脸的接口

data={

"api_key": "x2NyKaa6vYuArYwat4x0-NpIbM9CrwGU",

"api_secret": "OuHx-Xaey1QrORwdG7QetGG5JhOIC8g7",

"template_base64":f1_64,

"template_rectangle":rectangle1,

"merge_base64":f2_64,

"merge_rectangle":rectangle2,

"merge_rate":number

}

response1 = requests.post(url_add,data=data)

res_con1 = response1.content.decode('utf-8')

res_dict = json.JSONDecoder().decode(res_con1)

result = res_dict['result']

imgdata = base64.b64decode(result)

file=open(image_url,'wb')

file.write(imgdata)

file.close()

if __name__ == '__main__':

image1 = r"meizi1.jpg"

image2 = r"meizi.jpg"

image3 = r"face1.jpg"

merge_face(image1,image2,image3,100)

效果:

换脸前

要换的脸:

换脸后:

总结

到此这篇关于Python实现AI换脸的代码的文章就介绍到这了,更多相关Python实现AI换脸内容请搜索聚米学院以前的文章或继续浏览下面的相关文章希望大家以后多多支持聚米学院!

python换脸开源_Python实现AI换脸功能相关推荐

  1. python实现视频ai换脸_python 实现 AI 换脸

    #!/usr/bin/python # -*- coding: utf-8 -*- # @Time : 2019/9/1 8:50 # @Author : cuijianzhe # @File : A ...

  2. python调用API轻松实现AI 换脸

    # AI换脸 # AndyCheimport requests import json import simplejson import base64# 第一步:获取人脸关键点 def find_fa ...

  3. python实现视频换脸_Python实现AI换脸功能

    importrequestsimportjsonimportsimplejsonimportbase64#第一步:获取人脸关键点 deffind_face(imgpath):""& ...

  4. python 视频ai换脸_Python实现AI换脸--Faceswap

    "切勿滥用技术,切勿商用" 算法原理 Faceswap ,在 Encoder-Decoder 自编解码架构之上又引入 GAN技术,显著提升换脸效果 Encoder-Decoder ...

  5. python 屏幕录制_Python实现屏幕录制功能的代码

    前段时间做视频时需要演示电脑端的操作,因此要用到屏幕录制,下载了个迅捷屏幕录制,但是没有vip录制的视频有水印且只能录制二分钟,于是鄙人想了下能不能通过万能的python来实现呢?经过一晚上的尝试发现 ...

  6. python syslog 接口_python接口测试之日志功能

    之前在简书中看了一篇关于日志功能的文档,供大家参考:https://www.jianshu.com/p/62f7b49b41e7 Python通过logging模块提供日志功能,所以直接导入即可 im ...

  7. python 装机配置_Python实现自动装机功能案例分析

    前言 提示:在管理服务器的过程中,发现有很多服务器在启动的过程中默认以PXE方式启动,这就导致我们无法将PXE装机程序放开到所有的交换机端口中,本文是以Python对dell服务器进行了一些控制,更多 ...

  8. python log日志_Python的log日志功能及设置方法

    引入:Python中有个logging模块可以完成相关信息的记录,在debug时用它往往事半功倍 一.日志级别(从低到高): DEBUG :详细的信息,通常只出现在诊断问题上 INFO:确认一切按预期 ...

  9. python定时器 循环_Python循环定时服务功能(相似contrab)

    Python实现的循环定时服务功能.类似于Linux下的contrab功能.主要通过定时器实现. 注:Python中的threading.timer是基于线程实现的.每次定时事件产生时.回调完响应函数 ...

最新文章

  1. linux版本之redhat9------终端中文软件zhcon0.2.6的安装及使用
  2. 文本分类与聚类(text categorization and clustering)
  3. Microsoft Access、MySQL 以及 SQL Server 所使用的数据类型和范围。
  4. 风华高科厚膜贴片电阻规格书_1206 0.25R取样贴片电阻规格主要参数详解
  5. Freemarker生成静态化文件
  6. 两个实际任务掌握图像分类【Keras】(转)
  7. iOS 动态隐藏状态栏
  8. Backpropagation Algorithm 的梯度
  9. 为什么说索引会加速查找过程
  10. 智慧酒店客房控制系统开发提高酒店管理效率和服务质量
  11. java print打印方法
  12. 高一计算机课程教案,高一信息技术复习课教案.doc
  13. 技术问答-5 String StringBuilder StringBuffer
  14. 苹果手机直播显示服务器,搭建流媒体服务器(iOS直播 )
  15. 手机进行linux编程的 app,手机也能编程?盘点这6个可以用手机编程的App!快收藏...
  16. linux系统下搜索文件,Linux系统下搜索文件的方法
  17. C语言中的二分查找法
  18. VS2019 配色_SOAR NEWS两款全新配色 Kobe 5、Louis Vuitton x NBA 项链
  19. 基于 USB PD DRP的充电宝原理解析
  20. 推荐系统之DIN模型(注意力机制对业务的理解)

热门文章

  1. iPhoneX上必须要有的几款手机APP
  2. Vue-cli3更改项目logo图标
  3. blender3.3在视频中添加文本
  4. 产品经理一定要知道的iOS App推送显示样式
  5. 项目经理如何成功地分配任务?| 每天成就更大成功
  6. 计算机考证报名时间表
  7. 悖论对计算机科学影响,科学界最著名的几大悖论,你能解释吗?
  8. java事件处理入门
  9. 深入理解蓝牙BLE之“BQB认证”
  10. python 认证机构_利用Python爬了SIG官网BQB认证公司清单,我有一些重大发现..