基于Face++的AI换脸实现(详细)

您所在的位置:网站首页 怎么简单的p图换脸软件 基于Face++的AI换脸实现(详细)

基于Face++的AI换脸实现(详细)

2024-05-30 23:12| 来源: 网络整理| 查看: 265

如何实现图片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() # 转换为json faces = 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 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() # 转换为json faces = 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 在这里插入图片描述 在这里插入图片描述

换脸成功!

如有帮助,博主想喝杯瑞幸,1毛也是支持,谢谢! 在这里插入图片描述

注:本篇文章仅供学习,请勿用于商业活动或侵权行为。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3