初学树莓派——(七)接入百度API实现人脸识别

目录

百度端

创建应用

新增人脸分组

 下载SDK

树莓派端

测试人脸识别


百度端

找到百度智能云中人脸识别这块的网址人脸对比_人脸对比识别_人脸对比相似度-百度AI开放平台

创建应用

 3c32cbc00067424485f48c0c9217f55f.png

 20fb40d57dc14498ab24ea302a50e107.png

按照网页的指示步骤即可完成创建

04c450ee1b0f4219881247e9df9880aa.png

返回应用列表即可查看已创建的应用

 

245484fa9415401f86fefb62caa4847c.png

新增人脸分组

1eeaf4c1a0364bbf88502e08e45b9d88.png

 7fb1c4a3a2c2471ea65a3f022a3bd08f.png

ab372dec4769437e854bb3562e790cb1.png

 下载SDK

 13d850d7dc31454d87db120580816a06.png

 e6427582327e40dd90ed08bd38a77eeb.png

 532ac882faf14b4b9416c380d7059dd2.png

树莓派端

 SDK传输至树莓派,我用的是VNC远程传输,没有用VNC的小伙伴可以直接用U盘拷贝

 安装pipsetuptools,此处不讲解如何安装哈,大家加油,安装后检查一下是否安装到位

26719d22e0a14f9b9f63cd99d73821e3.png

 3e4ece969a254d5d9d1be897778ba231.png

 我粗鲁了一下,输入命令python setup.py install后报了个错,然后我直接加了sudo继续命令他,然后success安装到位

 3fe42331a11849c79443ffb7548235d8.png

测试人脸识别

我在桌面上创建了一个文件夹face_dect用来存放本次所需的py文件,jpg文件,txt文件

下面是我的代码

#导入相关的库,因为我用的是外接的摄像头,所以我选择使用CV2来调取摄像头的图像
from aip import AipFace         # 百度的API库,前面讲解了如何安装
import cv2                      # 我前面的博客讲过如何安装CV2
import time                     # pip install time
import urllib.request           # pip install request  pip install urllib
import base64

video = cv2.VideoCapture(0)     # 调用摄像头
judge = video.isOpened()        # 判断video是否打开



#百度人脸识别API账号信息
APP_ID = '你的APP_ID'            # 文章前面讲解了如何设置此类信息
API_KEY = '你的API_KEY '
SECRET_KEY ='你的SECRET_KEY '
GROUP = '你的GROUP '
IMAGE_TYPE='BASE64'              # 图像编码类型
client = AipFace(APP_ID, API_KEY, SECRET_KEY)#创建一个客户端用以访问百度云



#把图像上传到百度api进行人脸检测
def go_api(image):
    result = client.search(str(image, 'utf-8'), IMAGE_TYPE, GROUP);#在百度云人脸库中寻找有没有匹配的人脸
    
    if result['error_msg'] == 'SUCCESS':#如果成功了
        name = result['result']['user_list'][0]['user_id']#获取名字
        score = result['result']['user_list'][0]['score']#获取相似度
        
        if score > 80:#如果相似度大于80
            if name == 'XXX':#此处的XXX就是你在GROUP下面设置的人物
                print("欢迎%s !" % name)
        else:
            print("对不起,我不认识你!")
            name = 'Unknow'
            return 0
        curren_time = time.asctime(time.localtime(time.time()))#获取当前时间
 
        #将人员出入的记录保存到Log.txt中
        f = open('Log.txt','a')
        f.write("Person: " + name + "     " + "Time:" + str(curren_time)+'\n')
        f.close()
        return 1
    
    
    elif result['error_msg'] == 'pic not has face':
        print('检测不到人脸')
        time.sleep(2)
        return 0
    
    else:
        print(result['error_code']+' ' + result['error_code'])
        return 0

def getimage():
    if judge:
        ret, frame = video.read()        # 获取摄像头
        cv2.imshow("frame", frame)       # 我在这个地方把摄像头获取到的东西放出来了
                                         # 便于调试,但是每个while需要手动把小窗口关掉
        cv2.waitKey(0)                   # 小窗口保持,不然的话小窗口无法显示图像
        cv2.imwrite('b.jpg', frame)      # 把刚刚摄像头拿到的图片保存到b.jpg
                                         # 这个文件的路径和py文件一致
        
#对图片的格式进行转换
def transimage():
    f = open('b.jpg','rb')
    img = base64.b64encode(f.read())
    return img

if __name__ == '__main__':
    while True:
        getimage()
        img = transimage()#转换照片格式
        res=go_api(img)
        if(res==1):
            print("yes")
        else:
            print("no")
# 释放窗口
video.release()
cv2.destroyAllWindows()

 

 

posted on 2022-05-07 20:06  naive156  阅读(7)  评论(0编辑  收藏  举报  来源

导航