python+opencv+百度智能云 人脸识别——人脸融合
一.设计思路
1.导入模块
import base64
import json
import requests
base64模块:由于某些系统中只能使用ASCII字符。Base64就是用来将非ASCII字符的数据转换成 ASCII字符的一种方法。
json模块:JSON的数据格式其实就是python里面的字典格式,里面可以包含方括号括起来的数组,也就是python里面的列表。
requents模块:进行网络请求时,变得人性化,模仿浏览器的访问网页并获得反执等
2.获取token
def gettoken():token = ""if token == "":APP_ID = '【】' # 你的APP_IDAPI_KEY = '【】' # 你的API_KEYSECRET_KEY = '【】' # 你的SECRET_KEY# client_id 为官网获取的AK, client_secret 为官网获取的SKhost = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials' + \'&client_id=' + API_KEY + \'&client_secret=' + SECRET_KEY# print(host)response = requests.get(host)# if response:# for item in response.json().items(): # 逐项遍历response.json()----字典# print(item)token = response.json()["access_token"]print(">>成功获取到token")return token
这里首先要在百度智能云获取到自己的APP_ID、API_KEY、SECRET_KEY
具体获取方法参考我的另一篇文章:获取access_token
3.获取图片base64
# 3.获取图片base64 -- base64是图片的一种格式,所以要先打开图片,然后转成base64编码才能用
def read_pic(name):f = open(name, "rb")base64_data = base64.b64encode(f.read())s = base64_data.decode()print(">>图片读取成功")return s
打开图片,对图片通过base64模块进行编码并保存
4.保存base64到本机
# 4.保存base64到本机
def save_pic(data):# image_data = base64.decode()# f = open("mix.jpg","wb")# f.write(image_data)imagedata = base64.b64decode(data)file = open('E:\\python_Work\\face_know\\mix.jpg', "wb")file.write(imagedata)print(">>图片保存完成")
将图片数据保存到本地,在本地新建mix.jpg(即最终图片融合完成要保存的图)
这里的路径应该与项目路径相同
5.图片人脸融合
# 5.图片融合
def mix(template, target):token = gettoken()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"]save_pic(res)print(">>人脸融合完成")else:print(str(result[' error_code ']) + result['error_msg'])
根据官方文档要求,访问方式为post,先设置访问请求头(headers)和主要内容(body),
请求地址在这块:注意:一共有500次调用限制,谨慎使用,其他调通了在来这块访问,不然等程序调完,次数也不多了
完成访问后,将返回的信息,通过json()模块进行格式化,转换成python里的字典格式,然后保存
6.功能测试
# 6.功能测试# 主函数
def main():image1 = read_pic("Picture1.jpg")image2 = read_pic("Picture2.jpg")mix(image2, image1)if __name__ == "__main__":try:main()print(">>程序执行完成")except Exception as result:print("出错原因:%s" % result)
调用上述函数,进行测试
二.效果展示
Picture1.jpg(自己的一张证件照)
Picture2.jpg(大家都爱的千玺,侵删)
合成效果如图:
哈哈哈哈哈哈,像是被人打了一样,纯属图片问题,拍照角度不一样,合成的图片是真的千奇百怪,以上仅供学术交流
三.总结
注意事项&解决方案:
(1)post参数中,body中image和image_type为必要参数,其他根据自己的需要添加
(2)请求体格式化:Content-Type为application/json,通过json格式化请求体。
(3)Base64编码:请求的图片需经过Base64编码,图片的base64编码指将图片数据编码成一串字符串,使用该字符串代替图像地址。您可以首先得到图片的二进制,然后用Base64格式编码即可。需要注意的是,图片的base64编码是不包含图片头的,如data:image/jpg;base64;
(4)一共有500次调用限制,谨慎使用,其他调通了在来这块访问,不然等程序调完,次数也不多了
python+opencv+百度智能云 人脸识别——人脸融合相关推荐
- 运用百度智能云车型识别API分析具体车型
运用百度智能云车型识别API分析具体车型 一.申请Key 百度AI开放平台图像识别_API Key与Secret Key 二.获取access_token 我这里运用"黑魔法"进行 ...
- 识别验证码之百度智能云Api识别
郑重声明: 本项目的所有代码和相关文章,仅用于经验技术交流分享,禁止将相关技术应用到不正当途径,因为滥用技术产生的风险与本人无关. 文章仅源自个人兴趣爱好,不涉及他用,侵权联系删 之前写过关于使用自动 ...
- Python调用百度智能云API进行文本情感分析
Python调用百度智能云API进行文本情感分析 安装SDK 在调用前首先需要通过 pip 安装百度智能云 SDK. 可参考官方文档:https://cloud.baidu.com/doc/OCR/s ...
- 基于百度智能云api识别验证码
基于百度智能云api识别验证码 通过调用百度智能云api接口进行验证码识别并输出. 使用baidu-aip模块进行模拟client登录,client.basicgeneral()函数识别图片文字并返回 ...
- python基于百度智能云实现批量身份证信息识别(附完整代码,可直接使用)
百度智能云配置 一.登录 登录百度智能云,找到卡证文字识别,点击立即使用 地址: https://cloud.baidu.com/product/ocr_cards 二.创建应用 创建一个应用,过程不 ...
- 百度智能云身份证识别API的使用
前言 系统账号需要进行身份认证的时候,注册用户需要上传本人身份证照片.百度云身份证识别接口可以识别身份证照片并提取身份证上面的信息作为响应返回.如姓名,身份证号等. 一.工作准备 1.注册登录百度智能 ...
- Yhen手把手带你使用百度智能云②----文字识别
声明: 以下内容为本人原创,仅供用于参考学习 禁止用于商业及违法用途 ·作者:@Yhen ·原文网站:CSDN ·原文链接:https://blog.csdn.net/Yhen1/article/de ...
- uniapp调用百度智能云身份证识别
第一步:注册登录百度智能云平台https://login.bce.baidu.com/ 第二步:选择产品服务-人工智能-文字识别-创建应用 第三步:获取应用的API Key 和Secret Key 代 ...
- python调用百度智能云API请求(以自然语言处理——词法分析为例)
调用API的思路: 获得api的token 按官方文档发送链接 分析返回的结果 步骤一:获取API的token 如果不知道token是啥,或是不知道怎么获取token,请参考:https://blog ...
最新文章
- 不服来战!多伦多大学教授500美元挑战整个机器学习圈子
- C++Builder中使用Pas文件
- 大数据视觉智能实践及医学影像智能诊断探索(讲座精华笔记)
- c++ 8.整数加法实现
- spring中怎么让事物提交_Spring怎么在一个事务中开启另一个事务
- 用onSaveInstanceState()方法保存Activity状态
- 签名(Signature)认证实现方式-用于请求鉴权
- 权威解读 GitHub、Apache 疑云:主流开源软件究竟是否会被闭源?| CSDN 独家
- STL源码剖析-vector
- 一年级大括号问题专项训练_新人教版一年级数学上册5.9解决问题(减法)微课视频辅导|课后练习...
- R实战之从头到尾分析广告数据集
- UTF-8编码占几个字节?
- DevC++和ege19.01版本图形库的配置安装
- 从祖师级到新生代,48位开发者的“武功秘籍”
- ECBS多机器人路径规划
- element ui走马灯怎么添加_element-ui对话框与走马灯一起用
- 线上宠物销售系统的设计与实现
- HTML 与HTML5 常用标签
- HAC Ada Compiler(开源Ade编译器)
- MFC TabControl插件 子对话框调用主对话框功能函数和变量
热门文章
- 美国杀人犯在上海当老师:让中国孩子远离洋垃圾
- python标示注释符号_【填空题】Python使用符号( ) 标示单行注释 (5.0分)
- 电脑桌面只有计算机图标,怎么隐藏电脑桌面图标-电脑系统装完,桌面上只有一个垃圾桶怎么办呢?超详细的教程在此...
- FM2接口FM2+接口主板能装的最高的CPU是什么
- vue codemirror 设置高度无效的解决办法
- 程序员必会英语词汇表(可能有点乱,建议保存慢慢看)
- WSL2中设置DNS后重启终端又失效的解决方法
- html 划到该区域有图片,html中如何在背景图片的某个区域加入连接
- 达观RPA助力某农商银行搭建智慧银行,为核心业务提供数据互通及步骤简省
- 淘宝屏蔽百度3---为淘宝叫好