python实现视频ai换脸_Python如何实现AI换脸功能 Python实现AI换脸功能代码
Python如何实现AI换脸功能?本篇文章小编给大家分享一下Python实现AI换脸功能代码,文章代码详细的介绍了实现方法,小编觉得挺不错的,有需要的小伙伴们可以来看看。
需要用到的接口:
获取人脸信息的接口: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实现AI换脸功能代码相关推荐
- python给视频添加声音_python给视频添加背景音乐并改变音量的具体方法
用到给视频添加背景音乐,并改变音量.记录一下,与碰到同样问题的朋友共享. import subprocess inmp4='E:/PycharmProjects/untitled2/hecheng/1 ...
- python给视频加背景音乐_python中加背景音乐如何操作
在python中加背景音乐的方法: 1.导入pygame资源包: 2.修改音乐的file路径: 3.使用init()方法进行初始化: 4.使用load()方法添加音乐文件: 5.使用play()方法播 ...
- python给视频加背景音乐_python给视频添加背景音乐并改变音量的具体方法
用到给视频添加背景音乐,并改变音量.记录一下,与碰到同样问题的朋友共享. import subprocess inmp4='E:/PycharmProjects/untitled2/hecheng/1 ...
- python编程入门第一课_python入门前的第一课 python怎样入门
人工智能时代的到来,很多文章说这么一句:"不会python,就不要说自己是程序员",这说的有点夸张了,但确实觉得目前python这个语言值得学习,而且会python是高薪程序员的必 ...
- python教程视频-有没有适合零基础小白学的python教程,视频或者书籍都可以?
当你想要自学 python3 编程时,面临的第一个问题是:"我应该看哪些书/教程/视频?"我有一份亲自验证过的极简答案.我刚经过 python3 入门并已开始实战数据分析与爬虫,这 ...
- python中难的算法_Python算法很难吗?python神书《算法图解》PDF电子版分享给你
许多小伙伴后台私信说,python算法让自己很头疼,有没有可以让算法像小说一样有趣的书籍资料呢?看这里吧!小宋为大家找到了这本<算法图解>的PDF电子版!让你在学习python的路上变得轻 ...
- python教程博客园_python学习(一)—简明python教程
2016-04-12 15:59:47 1. 介绍 2. 安装Python 3. 最初的步骤 4. 基本概念 5. 运算符与表达式 6. 控制流 7. 函数 8. 模块 9. 数据结构 10. 解决问 ...
- 用python写一个彩票过滤器_python入门教程NO.6 用python做个简单的彩票号码统计分析工具...
python入门教程 python入门教程NO.6 用python做个简单的彩票号码统计分析工具 本文涉及的python基础语法是:字典.集合及for循环 字典的定义 字典也是一种可变的容器,它可以存 ...
- python内建函数测试对象身份_python 学习笔记day03-python基础、python对象、数字、函数...
python基础 语句和语法 注释及续行 首要说明的是:尽管python可读性最好的语言之一,这并不意味者程序员在代码中就可以不写注释 和很多UNIX脚本类似,python注释语句从#字符开始 注释可 ...
- python写彩票预测软件_python入门教程NO.6 用python做个简单的彩票号码统计分析工具...
python入门教程NO.6 用python做个简单的彩票号码统计分析工具-1.jpg (37.04 KB, 下载次数: 0) 2020-11-27 14:29 上传 python入门教程 pytho ...
最新文章
- java 游戏视频_Java swing实现的小游戏24点游戏源码附带视频指导教程
- java web--servlet(2)
- android 代码签名apk,[Android]混淆代码后生成带签名的apk
- python代码少的作品_世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?...
- python成绩区间曲线图_Python重现论文图表之【包含置信区间的折线柱状图】
- Atitit 软件开发基本法 目录 1. 第一章 总纲(包含各大原则 定律 法则)	1 2. 爱提拉的原则	3 2.1. 简单原则 KISS	3 2.2. 提升可读性 面向人类编程 而不是面向机
- nas 和 远程文件夹同步_群晖NAS同步文件夹功能打开有什么需要注意的?
- 快捷键: Windows下利用微信快速截图
- matlab实现二元函数BP网络,m文件实现bp神经网络逼近二元函数
- java mp3文件合并,java怎么实现mp3合并
- element-ui插件pagination分页中、英文语言切换
- 【无代码体验】宜搭车辆管理系统模板试用
- ENSP:配置静态路由表,实现不同VLAN间的通信
- iOS视频播放的基本方法
- 风险评估等级计算机化系统分类,计算机化系统风险评估报告
- 计算机的宽带用户名没有了怎么办,电脑没办法建立宽带连接怎么办
- 3.2 二维随机变量的边缘分布
- canvas动画粒子效果分享,可以做背景,超级好看
- 2021 Principled Synthetic-to-Real Dehazing Guided by Physical Priors oral解读
- 怎么把视频中的水印去除?建议收藏这几种去水印方法