百度人脸实时识别软件

百度人脸信息实时识别软件

你会用到这个程序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()

猜你喜欢

转载自blog.csdn.net/lingdongtianxia/article/details/79293178
今日推荐