本篇笔记中的示例实现了打开一张人脸图片,识别出年龄、性别、颜值等人脸属性信息。其它的人脸比对、身份验证、活体检测等等功能都可以在此基础上进行扩展,差不多都是对人脸识别接口的调用和信息处理。
- 注册百度账号,用来登录百度AI开发平台(http://ai.baidu.com/),有账号的可以直接登录
- 注册成为开发者
- 创建应用,应用创建成功之后也就开通了人脸检测、人脸比对等等相关业务
- 获取密钥,AppID、API Key和Secret key
- 生成签名(Access Token),这个写代码的时候要用到,每个应用的Access Token有效期为30天,到期后要重新获取,或者是在写代码时每次都获取一下
- 启动开发
百度AI开放平台上有详细的接入指南:http://ai.baidu.com/docs#/Begin/top
向授权服务地址https://aip.baidubce.com/oauth/2.0/token发送请求(推荐使用POST),并在URL中带上以下参数:
- : 必须参数,固定为;
- : 必须参数,应用的;
- : 必须参数,应用的;
编程部分并不复杂,主要是对百度AI接口的调用及对请求数据的解析。但实现示例的功能还是用到了挺多知识点,下面会进行记录。
- 绑定请求服务器地址和密钥
- 按照百度人脸检测接口的格式要求添加header
- 将要检测的图片转换为为base64编码(这里需要注意一下,官方说上传的图片不能大于2M,测试了一个3M的图片依然可以请求成功,不过需要好几秒才能收到反馈,测试的3M的图片转成base64编码后长度超过1000万个字节,图片越小识别的速度越快)
- 按照百度人脸检测接口的格式要求打包body数据
- 使用post方式上传请求
- 解析反馈数据
网络编程
这里使用了QtNetwork模块中的网络接口来实现http编程,需要在.pro文件中添加 QT += network,主要用到了下面三个类:
- :该类允许应用程序发送网络请求和接收回复,类似于一个中转站或者一个容器,每当有请求创建或者接收到回复都由该类进行调度
- :网络请求
- :网络请求的应答,在请求被完成调度是由QNetworkAccessManager创建
get、put、post请求方式的区别简述
这里只用到了post请求,并且目前大多数网络请求的方式均使用post。
- (类似于数据库select操作),会向数据库发送数据的请求,从而来获取信息,不会改变数据内容,并且无论进行多少次操作,结果都是一样的
- (类似于数据库update操作),是会向服务器端发送数据的,会修改数据的内容,但是不会增加数据的种类,并且无论进行多少次操作,结果都是一样的
- (类似于数据库insert操作),是会向服务器端发送数据的,但是该请求会改变数据的种类等资源,会创建新的内容
POST 提交数据方式
常用格式如下:
- application/x-www-form-urlencoded
- multipart/form-data
- application/json
- text/xml
这篇文章里有这四种方式的详细介绍
如何对图片进行base64编码
- 提取图片
- 数据转换为base64编码
代码如下:
JSON数据解析
这部分内容还挺多的,可以从网络学习JSON教程,下面的代码里也有用到。
数据上传
请求反馈数据解析
以上就是本篇文章【Qt+百度AI实现人脸识别之人脸检测】的全部内容了,欢迎阅览 ! 文章地址:https://sicmodule.kub2b.com/news/15144.html
栏目首页
相关文章
动态
同类文章
热门文章
网站地图
返回首页 企库往资讯移动站 https://sicmodule.kub2b.com/mobile/ , 查看更多