目录

  • 1.作者介绍
  • 2.人脸融合介绍
  • 3.调用百度智能云API
  • 4.代码解析
    • 4.1 导入库
    • 4.2 获取token
    • 4.3 读取图片,转换编码
    • 4.4 调用百度智能云接口实现图片融合
    • 4.5 下载融合图片
    • 4.6 运行主程序
    • 4.7 融合结果展示
  • 5. 完整代码

1.作者介绍

刘帅波,男,西安工程大学电子信息学院,2021级研究生,张宏伟人工智能课题组
研究方向:机器视觉与人工智能
电子邮件:1461004501@qq.com

2.人脸融合介绍

简单来说就是对两张人脸进行融合处理,使生成的人脸同时具备两张人脸的外貌特征。这是百度智能云官网平台给出的在线测试页面,支持四种图片格式,且要求图片大小不超过2M。

3.调用百度智能云API

如何创建应用接口步骤如下,按照箭头提示依次点击即可
步骤一:

步骤二:

步骤三:

4.代码解析

4.1 导入库

import requests         # 可以用来生成一个网络请求,抓取网络信息即用来调用百度云的接口
import base64           # 将图片信息采用Base64编码
import json             # 是一种轻量级的数据交换格式

4.2 获取token

# token获取
def get_token(client_id, client_secret):# client_id为官网获取的API Key,client_secret为官网获取的Secret Key.下行client_id=后的马赛克为你的API Key,client_secret=后的马赛克为你的Secret Keyurl = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=********&client_secret=*********"response = requests.get(url)resultJson = response.json()return resultJson['access_token']

这里需要使用自己在百度智能云获取的API Key和Secret Key,token相当于访问百度云人脸融合接口时服务端发放给你的“访问许可”

4.3 读取图片,转换编码

# 根据图片名读取图片,并转换成base64
def read_photo(name):with open('%s' % name, 'rb') as f:base64_data = base64.b64encode(f.read())bd = base64_data.decode()return bd

此处属于固定函数模型

4.4 调用百度智能云接口实现图片融合

# 调用百度的接口,实现融合图片
def face_fusion(token, template, target):url = 'https://aip.baidubce.com/rest/2.0/face/v1/merge'request_url = url + '?access_token=' + tokenparams = {"image_template": {               # 将其中一张图片设置为模板(相当于底层图片)"image": template,"image_type": "BASE64","quality_control": "NORMAL"},"image_target": {                 # 将其中一张图片设置为目标(相当于人脸信息“叠加”到模板上)"image": target,"image_type": "BASE64","quality_control": "NORMAL"},"merge_degree": "HIGH"            # 融合程度}params = json.dumps(params)headers = {'content-type': 'application/json'}result = requests.post(request_url, data=params, headers=headers).json()  # 经过调用百度云接口服务器返回的内容(融合结果)if result['error_code'] == 0:res = result["result"]["merge_image"]down_photo(res)else:print(str(result['error_code']) + result['error_msg'])

这里为核心部分,调用百度API实现人脸图像融合

4.5 下载融合图片

# 下载融合后图片
def down_photo(data):imagedata = base64.b64decode(data)file = open('D:\\研一任务\\课程作业\\人工智能高级语言程序设计\\result.jpg', "wb")# 融合图片保存路径,'wb':以二进制格式打开一个文件只用于写入,文件存在则覆盖,若不存在创建新文件file.write(imagedata)

注意此处的保存路径名称,避免出现“\n”,“\r”等形式,造成路径无法读取错误

4.6 运行主程序

# 主程序
if __name__ == '__main__':# 路径为自己的图片存储路径胡歌 = read_photo('D:\\研一任务\\课程作业\\人工智能高级语言程序设计\\1.jpg')                # 模板图片赵丽颖 = read_photo('D:\\研一任务\\课程作业\\人工智能高级语言程序设计\\2.jpg')              # 目标图片token = get_token('*********', '**********')  # 前者为API Key,后者改为Secret Keyface_fusion(token, 胡歌, 赵丽颖)

此处需要使用百度智能云获取的API Key和Secret Key,运行主程序便可获得人脸融合图像结果(注意:应当选择正面无遮挡的清晰人脸照片,否则会出现检测不到人脸的提示)

4.7 融合结果展示

5. 完整代码

'''
Author:LSB / 207
Date:2022年03月03日
'''import requests         # 可以用来生成一个网络请求,抓取网络信息即用来调用百度云的接口
import base64           # 将图片信息采用Base64编码
import json             # 是一种轻量级的数据交换格式# token获取
def get_token(client_id, client_secret):# client_id为官网获取的API Key,client_secret为官网获取的Secret Key.下行client_id=后的马赛克为你的API Key,client_secret=后的马赛克为你的Secret Keyurl = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=***********&client_secret=************"  # 注意此处的&符号response = requests.get(url)resultJson = response.json()return resultJson['access_token']# 根据图片名读取图片,并转换成base64
def read_photo(name):with open('%s' % name, 'rb') as f:base64_data = base64.b64encode(f.read())bd = base64_data.decode()return bd# 调用百度的接口,实现融合图片
def face_fusion(token, template, target):url = 'https://aip.baidubce.com/rest/2.0/face/v1/merge'request_url = url + '?access_token=' + tokenparams = {"image_template": {               # 将其中一张图片设置为模板(相当于底层图片)"image": template,"image_type": "BASE64","quality_control": "NORMAL"},"image_target": {                 # 将其中一张图片设置为目标(相当于人脸信息“叠加”到模板上)"image": target,"image_type": "BASE64","quality_control": "NORMAL"},"merge_degree": "HIGH"            # 融合程度}params = json.dumps(params)headers = {'content-type': 'application/json'}result = requests.post(request_url, data=params, headers=headers).json()  # 经过调用百度云接口服务器返回的内容(融合结果)if result['error_code'] == 0:res = result["result"]["merge_image"]down_photo(res)else:print(str(result['error_code']) + result['error_msg'])# 下载融合后图片
def down_photo(data):imagedata = base64.b64decode(data)file = open('D:\\研一任务\\课程作业\\人工智能高级语言程序设计\\result.jpg', "wb")# 融合图片保存路径,'wb':以二进制格式打开一个文件只用于写入,文件存在则覆盖,若不存在创建新文件file.write(imagedata)# 主程序
if __name__ == '__main__':# 路径为自己的图片存储路径胡歌 = read_photo('D:\\研一任务\\课程作业\\人工智能高级语言程序设计\\1.jpg')                # 模板图片赵丽颖 = read_photo('D:\\研一任务\\课程作业\\人工智能高级语言程序设计\\2.jpg')              # 目标图片token = get_token('*********', '**********')  # 前者为API Key,后者改为Secret Keyface_fusion(token, 胡歌, 赵丽颖)

Python调用百度API实现人脸融合相关推荐

  1. Python调用百度API进行人脸对比

    目录 1. 作者介绍 2. 关于Base64知识介绍 2.1 Bsae64是什么 2.1 Bsae64编码原理 3. 实验过程 3.1 实验过程 3.2 实验代码 3.3 运行结果 3.4 问题分析 ...

  2. python3调用百度API完成人脸识别,检测人种-年龄-性别-颜值-眼镜

    https://ai.baidu.com/docs#/Face-Detect/top 这个是百度人脸识别api 参考博客:https://blog.csdn.net/qq_38412868/artic ...

  3. [Python]调用百度API进行自然语言处理 标签、关键字 以及 词法分析

    1.进入百度API自然语言处理文档 进入右上角的控制台,注册登录 左侧导航栏选择自然语言处理 创建自己的应用 输入应用名称以及应用描述,其他默认即可. 在如下页面记住自己的API Key以及Secre ...

  4. python调用百度api判断两张图片是否相同_python如何调用百度识图api

    一.先去百度识别官网注册开通服务且获得ak和sk 二.代码模板 import cv2 import base64 import requests import numpy as np import t ...

  5. 地理位置与经纬度之间相互转换(基于python调用百度API)

    百度API 位置与经纬度相互转换 每天限制6000次 百度API平台 https://lbsyun.baidu.com/apiconsole/key#/home 1.pip install 安装相关p ...

  6. 调用百度API实现人脸对比

    百度API人脸对比 1.首先注册一个百度账号 2.百度AI平台https://ai.baidu.com/,找到 开放能力>人脸与人体检测>人脸对比>立即使用>创建应用 ,点击 ...

  7. Python调用百度API进行身份证识别

    目录 1.作者介绍 2.基于百度API的身份证识别 2.1 百度ORC接口简介 2.2 算法介绍 2.2.1图像预处理 2.2.2身份证图像粗定位 2.2.3细定位各种信息和分割 2.2.4识别信息 ...

  8. C#调用Face++ API实现人脸融合

    文章目录 一.人脸融合原理 二.代码实现 1.注册账号 2.创建发送请求和反馈的类 3.实现融合 4.生成图片 引言: 随着AI人工智能的发展,物联网技术逐渐进入平常百姓家,而人脸融合技术更能体现AI ...

  9. Python调用华为API实现人脸比对

    目录 1.作者介绍 2.背景及访问流程介绍 2.1 人脸识别服务介绍 2.2 华为人脸服务 2.3 华为API访问流程 2.4 构建HTTPS协议 2.5 人脸识别限制要求 3.关于实验代码.实验过程 ...

  10. python调用百度api接口_python调用百度API

    标签: from urllib.request import urlopen import requests import json url = "http://apis.baidu.com ...

最新文章

  1. Office 365 系列之一:初识Office 365
  2. 全面讲解电脑主板-图文
  3. python菜鸟教程h-Python 命令行参数
  4. threeten-extra使用实例
  5. 拼图项目:延期的后果
  6. [转载]了解Linux的进程与线程
  7. 公共端接正极还是负极_被称为下一代动力电池的固态电池,到底明年还是十年后才能量产?...
  8. 9_python基础—数据序列(公共方法)
  9. 海缆修好之前,上网悠着点
  10. 阶段面试题_关于文案、交易系统、付费渗透率、阶段性目标的面试题解答
  11. 关于asp.net上传图片自动生成缩略图
  12. 物联网卡云平台如何分析信息数据
  13. 最好用的杀毒软件avast!antivirus加免费注册码!
  14. 数据库周刊30丨数据安全法草案将亮相;2020数据库产业报告;云南电网上线达梦;达梦7误删Redo Log;Oracle存储过程性能瓶颈;易鲸捷实践案例……
  15. Cityscapes数据集介绍
  16. iPhone全部设备分辨率速查
  17. html字体外围有黄色边框,input或textarea在chrome、safari浏览器点击获得焦点时出现黄色边框去掉的方法...
  18. 新版Android Studio(4.1.1 for Windows 64-bit)的安装教程(超详细)
  19. 高德地图逆地理编码Geocoder的getlocation获取不到位置信息
  20. 百度正式推出移动框计算 发力移动搜索领域

热门文章

  1. 【历史上的今天】8 月 21 日:谷歌创始人诞生;百度 360 搜索大战
  2. ERP原理:第一节 ERP的总体结构
  3. esxi 部署模板_vSphere通过模板批量部署虚拟机
  4. PDF转DWG格式怎么转?分享两种好用转换方法
  5. Unity 移动方法总结
  6. linux下chm文件制作,自己动手将在线文档制作成CHM文件
  7. 《MarkDown编辑器的使用技巧(修改录入方式与目录生成)|CSDN编辑器测评》
  8. 做了多年开发的你发现自己的水平一直上不去,一篇文章教你如何提高开发水平的方法
  9. 自考计算机毕业论文范文,计算机信息论文范文 计算机信息类有关自考毕业论文范文5000字...
  10. plc程序加密解密方法解读