人脸识别软件是一款使用百度人脸识别接口做的有个简单的人脸识别工具(接口识别不准,仅限于娱乐),学习PyQt5做的一个人脸识别的小工具,使用百度的免费人脸识别接口,识别不是很准确,仅限学习娱乐。
在百度AI开放平台使用百度的人脸识别能力,只需要三个核心步骤即可操作完成:
获取接口权限
准备接口调用工具
进行接口调用,全部流程走通只需要十分钟时间。

1.申请百度人脸识别应用
首先需要在百度智能云平台登录
https://console.bce.baidu.com/ai/?_=1558444274128&fromai=1#/ai/face/overview/index
登陆后创建应用,创建的应用是人脸识别的,默认已帮你勾选上了相关功能。
创建应用后,点击管理应用,你就可以获取API Key和Secret Key
2.获取token
现在就可以编写代码调用在线的人脸检测API了
首先是获取token,用于校验,代码如下,注意换成自己申请的API Key和Secret Key
def getToken():
global token
# client_id 为官网获取的AK, client_secret 为官网获取的SK
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=你的API Key&client_secret=你的Secret Key'
request = urllib2.Request(host)
request.add_header('Content-Type', 'application/json; charset=UTF-8')
response = urllib2.urlopen(request)
content = response.read()
if (content):
token=json.loads(content)['access_token']
3.图片的base64编码
上传的用于检测的图片需经过Base64编码。需要注意的是,图片的base64编码是不包含图片头的,代码如下:
def imgToBase64(imgPath):
with open(imgPath, "rb") as f: # 转为二进制格式
base64_data = base64.b64encode(f.read()) # 使用base64进行加密
return base64_data
4.人脸识别
最后就是调用接口进行人脸识别了
def faceDetect(imgBase64):
'''
人脸检测与属性分析
'''
request_url = "https://aip.baidubce.com/rest/2.0/face/v3/detect"
request_url = request_url + "?access_token=" + token
request = urllib2.Request(request_url)
request.add_header('Content-Type', 'application/json')
data = {"image": imgBase64, "image_type": "BASE64","face_field":"age,beauty,expression,face_shape,gender"}
response = urllib2.urlopen(request, urllib.urlencode(data))
content = response.read()
if content:
return content
这个函数中输入的是图片的base64编码,请求的参数中比较重要的是那个face_field,默认只返回人脸框的位置、概率和旋转角度,age(年龄预测),beauty(颜值打分),expression(表情)等更多属性,需要在这个参数中添加,具体的请参考官方说明文档:http://ai.baidu.com/docs#/Face-Detect-V3/top
5.结果绘制与可视化
人脸识别最后返回的是json数据,但我们往往需要画个框框,把人脸框出来,同时把一些预测的属性也标注上,这个代码我已经附在最后面了。
最终实现的效果如下:

6.实现的完整源代码
下面我附上实现这些功能的完整代码:
#coding:utf-8
import urllib,urllib2, sys
import ssl
import json
import base64
import cv2
global token
def getToken():
global token
# client_id 为官网获取的AK, client_secret 为官网获取的SK
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=你的API Key&client_secret=你的Secret Key'
request = urllib2.Request(host)
request.add_header('Content-Type', 'application/json; charset=UTF-8')
response = urllib2.urlopen(request)
content = response.read()
if (content):
token=json.loads(content)['access_token']
def faceDetect(imgBase64):
'''
人脸检测与属性分析
'''
request_url = "https://aip.baidubce.com/rest/2.0/face/v3/detect"
request_url = request_url + "?access_token=" + token
request = urllib2.Request(request_url)
request.add_header('Content-Type', 'application/json')
data = {"image": imgBase64, "image_type": "BASE64","face_field":"age,beauty,expression,face_shape,gender"}
response = urllib2.urlopen(request, urllib.urlencode(data))
content = response.read()
if content:
return content
def imgToBase64(imgPath):
with open(imgPath, "rb") as f: # 转为二进制格式
base64_data = base64.b64encode(f.read()) # 使用base64进行加密
return base64_data
if __name__=="__main__":
getToken()
imgPath=r"C:\Users\lee\Pictures\lena.jpg"
result=json.loads(faceDetect(imgToBase64(imgPath)))['result']
face_list=result['face_list'][0]
location=face_list['location']
age=face_list['age']
beauty=face_list['beauty']
expression=face_list['expression']['type']
gender=face_list['gender']['type']
img = cv2.imread(imgPath, cv2.IMREAD_COLOR)
leftTopX=int(location['left'])
leftTopY=int(location['top'])
rightBottomX=int(leftTopX+int(location['width']))
rightBottomY = int(leftTopY + int(location['height']))
cv2.rectangle(img, (leftTopX, leftTopY), (rightBottomX, rightBottomY), (0, 255, 0), 2)
font = cv2.FONT_HERSHEY_SIMPLEX
# 第一个坐标表示起始位置
cv2.putText(img,"age:"+str(age),(0, 20),font, 0.5, (200, 255, 255), 1)
cv2.putText(img, "gender:" + gender.encode("utf-8"), (0, 40), font, 0.5, (200, 255, 255), 1)
cv2.putText(img, "beauty:" + str(beauty), (0, 60), font, 0.5, (200, 255, 255), 1)
cv2.putText(img, "expression:" + str(expression), (0, 80), font, 0.5, (200, 255, 255), 1)
cv2.imshow('image', img)
cv2.waitKey(0)
print("end")
开发者其他应用

简单搜索43.8M30201人在玩简单搜索是一款手机上的搜索引擎,在简单搜索中给用户可以智能高效的搜到自己想搜的内容哦,其中简单搜索在功能体验上还是很不错的,有需要上网的用户快来西西简单搜索专区下载
下载
腾讯体育app最新版224.1M42099人在玩腾讯体育app最新版是腾讯体育平台推出的一款便捷的手机体育直播app。通过这款腾讯体育app,你可以观看赛事直播,也能第一时间了解最新体育新闻动态。
下载
看点快报app40.3M1048人在玩天天快报app是一款生活娱乐应用,天天快报app每日为用户推送有趣的娱乐搞笑段子,同时你可以对文章及图片进行评论,有不少内涵的神吐糟回复,还能在在图片中加入贴图与文字
下载
猎豹浏览器手机版23.0M26398人在玩猎豹浏览器手机版以极速和炫酷为主要特色,重点突出手机观看视频功能,首次在手机浏览器上实现支持快播与百度影音。猎豹浏览器手机版更省流量、更安全、更智能
下载
百度安卓版133.7M11270人在玩手机百度是一款有6亿用户在使用的手机搜索客户端,依托百度网页、百度图片、百度新闻、百度知道、百度百科、百度地图、百度音乐、百度视频等专业垂直搜索频道,方便用户随时随地使用百度搜索服务。
下载
2345浏览器手机版54.6M582人在玩2345浏览器具有智能广告拦截、网页多标签浏览、超级拖拽、鼠标手势、上网痕迹清除、老板键等多项网页浏览实用功能。功能特性收藏夹随身携带网站网址随身携带不丢失,注册登录2345帐号。
下载
凤凰新闻80.3M8934人在玩凤凰新闻客户端是一款优秀的新闻阅读客户端,第一时间奉献最新最有价值的新闻!依托凤凰卫视、凤凰网独家新闻资讯优势,每天24小时精心呈现全方位新闻讯息。
下载
腾讯微云42.3M561人在玩腾讯微云下载,微云可以让PC和手机文件可进行无线传输并实现同步,让手机中的照片自动传送到PC,并可向朋友们共享,功能和苹果的iCloud较为类似。
下载
chrome谷歌浏览器手机版222.5M38380人在玩谷歌浏览器手机版下载安装到手机桌面是通用于android4.0以上平板电脑和手机设备上的chrome浏览器,GoogleChrome浏览器不仅在桌面设备上表现卓越,在Android手机和平板电脑上也可让您
下载
百度贴吧安卓版2022最新版58.1M7231人在玩西西最喜欢用百度贴吧安卓版下载安装最新版看小说,热门小说更新及时,而且是文字版,有手机看更方便,可以随时看。百度贴吧客户端抢楼更快捷,随心所欲发图片,还有更多贴吧豆奖励哦!更快升级速度!
下载