基于Face++的AI换脸实现(详细)
如何实现图片AI换脸(详细)
- 前言
- 关于AI换脸
- 常见的换脸API供应者
- 获取换脸API
- 代码实现
- 导入相应库与API链接
- 定义一个获取图片的人脸特征参数的函数
- 定义一个换脸函数
- 换脸实现--完整代码
- 结果展示
- 写在最后
前言
关于AI换脸
关于AI(即Artificial Intelligence)如何实现人脸切换,改变五官。背后有其自身的特殊算法,将人脸的信息特征通过机器语言来传达至计算机。通过机器学习(machine learning)让计算机懂得识别人脸对应的分点,然后再在其他人脸上展现出来,达到换脸的目的。
常见的换脸API供应者
已经开发研究过AI的公司,有提供相应我们所需的api接口业务服务,我们可以借助这些公司提供的API进行人脸转换操作。此类有如:deepfake、face++等(这里以face++作为例子)
获取换脸API
face++(点击即可进入)
首先需要进入face++官网,完成注册后,可在账户信息中申请创建得到API key,API secret。
代码实现
导入相应库与API链接
import requests
import base64
import warnings; warnings.simplefilter('ignore')
导入所获取的API的key与secret
API_Key = '' # JustForFun的API Key
API_Secret = '' # JustForFun的API Secret
定义一个获取图片的人脸特征参数的函数
def find_face(imgpath): url = 'https://api-cn.faceplusplus.com/facepp/v3/detect' data = {'api_key': API_Key, 'api_secret': API_Secret, 'image_url': imgpath, 'return_landmark': 1} files = {'image_file': open(imgpath, 'rb')} response = requests.post(url, data=data, files=files) res_json = response.json() # 转换为jsonfaces = res_json['faces'][0]['face_rectangle'] # 获取面部大小的四个值,分别为长宽高低return faces # 返回图片的面部参数
定义一个换脸函数
# 定义一个换脸函数,函数中number表示两张脸的相似度为99%
def change_face(image_1, image_2, number=99):url = "https://api-cn.faceplusplus.com/imagepp/v1/mergeface" find_p1 = find_face(image_1) find_p2 = find_face(image_2) rectangle1 = str(str(find_p1['top']) + ',' + str(find_p1['left']) + ',' + str(find_p1['width']) + ',' + str(find_p1['height'])) rectangle2 = str(str(find_p2['top']) + ',' + str(find_p2['left']) + ',' + str(find_p2['width']) + ',' + str(find_p2['height'])) page1 = open(image_1, 'rb') page1_64 = base64.b64encode(page1.read()) page1.close() page2 = open(image_2, 'rb') page2_64 = base64.b64encode(page2.read()) page2.close() data = {'api_key': API_Key, 'api_secret': API_Secret, 'template_base64': page1_64,'template_rectangle': rectangle1, 'merge_base64': page2_64, 'merge_rectangele': rectangle2,'merge_rate': number} response = requests.post(url, data=data).json() results = response['result'] image = base64.b64decode(results) with open('所得到的图片.jpg', 'wb') as file: # 将信息写入到图片file.write(image)print("转换完成")
最后将需要换脸的图片导入,运行
if __name__ == '__main__':change_face('D:地址\\所交换的图片1.jpg','D:地址\\所交换的图片2.jpg')
换脸实现–完整代码
import requests
import base64
import warnings; warnings.simplefilter('ignore') API_Key = '' # JustForFun的API Key
API_Secret = '' # JustForFun的API Secretdef find_face(imgpath): url = 'https://api-cn.faceplusplus.com/facepp/v3/detect' data = {'api_key': API_Key, 'api_secret': API_Secret, 'image_url': imgpath, 'return_landmark': 1} files = {'image_file': open(imgpath, 'rb')} response = requests.post(url, data=data, files=files) res_json = response.json() # 转换为jsonfaces = res_json['faces'][0]['face_rectangle'] # 获取面部大小的四个值,分别为长宽高低return faces # 返回图片的面部参数def change_face(image_1, image_2, number=99):url = "https://api-cn.faceplusplus.com/imagepp/v1/mergeface" # find_p1 = find_face(image_1) find_p2 = find_face(image_2) rectangle1 = str(str(find_p1['top']) + ',' + str(find_p1['left']) + ',' + str(find_p1['width']) + ',' + str(find_p1['height'])) rectangle2 = str(str(find_p2['top']) + ',' + str(find_p2['left']) + ',' + str(find_p2['width']) + ',' + str(find_p2['height'])) page1 = open(image_1, 'rb') page1_64 = base64.b64encode(page1.read()) page1.close() page2 = open(image_2, 'rb') page2_64 = base64.b64encode(page2.read()) page2.close() data = {'api_key': API_Key, 'api_secret': API_Secret, 'template_base64': page1_64,'template_rectangle': rectangle1, 'merge_base64': page2_64, 'merge_rectangele': rectangle2,'merge_rate': number} response = requests.post(url, data=data).json() results = response['result'] image = base64.b64decode(results) with open('所得到的图片.jpg', 'wb') as f: # 将信息写入到图片f.write(image)print("转换完成")if __name__ == '__main__':change_face('D:路径\\所交换的图片1.jpg','D:路径\\所交换的图片2.jpg')
结果展示
P1
P2
P3
换脸成功!
写在最后
如果你觉得文章对你有帮助,求一个小小的赞
作为一个初来乍到的新人博主
求关注~(悄咪咪)
注:本篇文章仅供学习,请勿用于商业活动或侵权行为。
基于Face++的AI换脸实现(详细)相关推荐
- 基于DeepFaceLab的AI换脸
## 基于DeepFaxeLab的AI换脸导言:本文主讲SAEHD模型的训练脚本,QUICK96类似,不重复展开下面以2021年0104英文版为案例讲解,附带中文翻译.可能跟各汉化版名称说法有出入,请 ...
- AI“换脸”打开潘多拉魔盒,如何应对?
来源:科学网 近日,一款名为"ZAO"的换脸APP引发舆论关注.用户上传照片,就可以把影视剧主角的脸替换成用户自己的脸.在过把"明星瘾"的同时,也让大众关注到& ...
- Python轻松实现AI换脸
目录 引言 思路 代码 效果 引言 在网上看到一篇基于python实现AI换脸的文章,觉得很好玩复现了一下.研究了几个小时后成功把迪丽热巴的脸换到关晓彤上,很好看:另外还把蔡徐坤的脸换到特朗普上,效果 ...
- CV之FD:基于dlib、cv2库利用warpPerspective函数和_68_face_landmarks文件实现AI换脸渐变融合视频效果
CV之FD:基于dlib.cv2库利用warpPerspective函数和_68_face_landmarks文件实现AI换脸渐变融合视频效果 目录 输出结果 设计思路 输出结果 设计思路 实现代码 ...
- 【换脸详细教程】手把手教你进行AI换脸:换脸流程及源码详解
目录 1. 换脸基本原理 2 人脸检测及可视化 3. 人脸轮廓点检测及可视化 4. 人脸图像变换--仿射变换 5. 生成遮罩并直接替换人脸 6. 人脸颜色校正 最近AI换脸貌似比较火爆,就稍微研究了一 ...
- 如何进行AI换脸,AI换脸从 “0“ 到 “1” 详细教程 ——从配置环境开始
后续文章读起来可能会影响观看可以前往鄙人博客查看:http://www.anyuer.club/?id=199 前言: 本人吃计算机这口饭的,说实话AI换脸很火的时候自己却没碰,挺吃亏的,最近时间比较 ...
- AI换脸、声音篡改等,明确写入新版《民法典》
来源 | HyperAI超神经 5 月 28 日,十三届全国人大三次会议表决通过了<中华人民共和国民法典>(以下简称<民法典>)第四编人格权中的第四章肖像权,明确提出了以信息技 ...
- 神秘AI换脸软件入侵全球社交网络!马斯克秒变文艺复兴贵族
来自:新智元 FaceApp的热度刚过不久,近期又有一款让你的脸秒变「迪士尼」的App火遍了全球的社交网络. 要测试「AI换脸」的效果,怎么能少了我们的老朋友LeCun. 实测效果还不错,确实有一丝丝 ...
- 鹿晗都有 AI 粉了,为什么 AI 换脸剧的效果还这么渣?
本图片由AI换脸技术合成 作者 | 金玙璠 苏琦 编辑 | 魏佳 封图 | 来源于Bilibili Up主AI王子 来源 | 燃财经(ID:rancaijing) "科技改变追星生活.&qu ...
最新文章
- 【走过巨坑】android studio对于jni调用及运行闪退无法加载库的问题解决方案
- 埃洛等级分系统【转自百度百科】
- 读取文件:TypeError: an integer is required (got type str)
- 相邻数字+(正月点灯笼的动态规划2)(递归+DP)---JAVA
- mybatis if-else(写法)
- redis(redis概念,运用场景,如何操作基本数据类型)
- 最新公路测量计算机,工地通路测电脑版
- 用pcDuino来做电子相框
- 【案例练习】17个华丽的UI效果的实现 ,激发你的创造灵感
- bat命令实现游戏存档自动备份
- C语言无符号有符号比较问题总结
- 前端自动生成Change Log的实现
- 胡喜:我是如何从菜鸟做到架构师的
- JS里数组合并的几种方法
- 圆周率 php算法,PHP坐标圆周率计算
- ABAP在Eclipse中做abap cds视图(marc表增强字段增强)
- 草莓tv 无法播放_草莓:高质量的声音,开源音乐播放器
- (二十三)SpringMvc的控制器是不是单例模式,如果是,有什么问题,怎么解决?
- MobCtrl万能遥控-手机控制电脑软件简介[官方]
- 【模拟】找规律填数字
热门文章
- 木犀草素-mPEG-PLGA载药纳米粒|葛根素HA/PEG-PLGA纳米粒|盐酸维拉帕米PLGA纳米粒(齐岳bio)
- 基于java超市会员管理系统
- 考研英语阅读真题8大来源报刊
- K-近邻算法讲解以及实战
- 9000字,通俗易懂的讲解下Java注解
- Mac下使用iPic+腾讯云cos打造舒服的写作环境
- 【ArduPilot开发指南】1.2.7 完整的参数列表 - BATTx_参数
- 腾讯tars报initLogger空指针异常
- cad对计算机的配置要求高吗,AutoCAD2018对电脑配置要求 需要什么配置的电脑
- web前端卡片样式_css完成卡片式图片结果_WEB前端开发