百度人脸信息实时识别软件
你会用到这个程序https://gitee.com/wangkingking/BaiDuRenLianXinXiShiShiShiBieRuanJian/tree/master
百度人脸注册软件http://blog.csdn.net/lingdongtianxia/article/details/79283549
文件结构:
|——README.md
|——face.py #人脸实时识别主程序,人脸识别用的opencv预处理,检测到人脸后再用百度接口提取人脸信息,详询百度官方文档
|——LoginInfo.txt #登录信息
|——haarcascade_frontalface_alt2.xml #opencv人脸识别模型
|——haarcascades.zip #多种识别模型
|——face
| |——example.jpg #算是缓存吧,opencv和百度人脸识别信息交换媒介,很多用到的人脸测试图片我也放这个文件夹里面
|——百度人脸识别demo.zip #人脸识别和人脸信息提取均用的是百度云接口,没有GUI,这个例子注重介绍百度人脸识别的用法,文
| |——face #档结构和上面一样,不再赘述
| | |——example.jpg
| |——face.py
| |——LoginInfo.txt
LoginInfo.txt详细介绍:
from aip import AipFace
""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'
client = AipFace(APP_ID, API_KEY, SECRET_KEY)
如上代码片所示,注册新用户时获得一个接口需要三个参数,这三个参数以JSON格式写在LoginInfo.txt中
"""在LoginInfo.txt中写入自己的三个登录信息"""
{"appid":"94****2", "apikey":"Dal1gu0F8*******kaClU4EW", "secretkey":"VNHzN*******yn0Qxjs"}
face.py详细介绍:
import cv2
from aip import AipFace
import json
""" 读取图片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
"""识别人脸并提供信息"""
def dect_face(file):
"""参数:图片的绝对路径"""
image = get_file_content(file)
with open('LoginInfo.txt', 'r') as fp: #打开LoginInfo.txt
info = json.loads(fp.read()) #登录信息转换成JSON数据
client = AipFace(info['appid'], info['apikey'], info['secretkey']) #根据登录信息创建百度云实例
groupId = "group1"
identify_options = {}
identify_face_data = client.identifyUser(groupId, image, identify_options)['result'][0]
return identify_face_data
cascPath="./haarcascade_frontalface_alt2.xml" #级联分类器模型
faceCascade = cv2.CascadeClassifier(cascPath) #创建级联分类器
video_capture = cv2.VideoCapture(0) #捕获摄像头图像流,可修改参数
while True:
ret, frame = video_capture.read() #获得摄像图图像
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) #将获得的图像变成灰度图
faces = faceCascade.detectMultiScale(gray,scaleFactor=1.1,minNeighbors=3,\
minSize=(30, 30)) #识别人脸->(x, y, w, h)
for (x, y, w, h) in faces: #在frame中画出人脸轮廓并注明信息
cv2.imwrite('face/example.jpg', frame)
cv2.rectangle(frame, (x, y-20), (x+w, y+h+20), (0, 255, 0), 2)
try:
data = dect_face('face/example.jpg')
except:
pass
#在frame上写人脸信息
cv2.putText(frame,data['uid'],(x,y-65), cv2.FONT_HERSHEY_SIMPLEX, 1,(0,255,255),2)
cv2.putText(frame,data['user_info'],(x,y-30), cv2.FONT_HERSHEY_SIMPLEX, 1,(0,255,255),2)
break #保证每次只处理一张人脸
# Display the resulting frame
cv2.imshow('Video', frame) #显示图片,刷新很快就成了视频
if cv2.waitKey(1) & 0xFF == ord('q'): #英文输入法按Q退出循环
break
video_capture.release() # When everything is done, release the capture
cv2.destroyAllWindows()