树莓派+百度云打造人脸识别门禁系统

先注册一个百度云账号:

然后点击左上角的百度云进入首页:

在首页中选择产品,人工智能,人脸识别,点击进入:

选择立即使用:

在以下页面中由于没用应用,因此点击创建应用,然后直接写上应用名和应用描述就行了,人脸识别的功能都全部默认有了,由于我已经创建好了,因此我点击管理应用查看我的应用:

请务必记好你的AppID、API Key和Secret Key,在程序中我们将用它们作为唯一的标识,然后点击下载SDK进入以下界面:

扫描二维码关注公众号,回复: 4398357 查看本文章

我们选择python Http SDK,下载以后将它导入到树莓派中然后详细查看它的使用说明。

值得注意的是,安装的是aip不是api:

将包解压然后进入到解压的目录执行命令就可以了。

创建好应用以后,接下来就需要将人脸上传了,在这个界面中点击人脸管理:

点击你的人脸库名称,新建一个组:

记好你的组ID,在编写代码的时候要用到,然后点进去创建用户:

这样一来所有工作都做完了接下来附上我的代码:

from aip import AipFace
from picamera import PiCamera
import urllib.request
import RPi.GPIO as GPIO
import base64
import time
#百度人脸识别API账号信息
APP_ID = '15050553'
API_KEY = 'rlRrtRL5oRdXGh71jgg1OmyN'
SECRET_KEY ='dK5TpuTAZn2nw5eVpspZLmF5Qs1Uu8A1'
client = AipFace(APP_ID, API_KEY, SECRET_KEY)#创建一个客户端用以访问百度云
#图像编码方式
IMAGE_TYPE='BASE64'
camera = PiCamera()#定义一个摄像头对象
#用户组
GROUP = 'lihuaqiang'

#照相函数
def getimage():
    camera.resolution = (1024,768)#摄像界面为1024*768
    camera.start_preview()#开始摄像
    time.sleep(2)
    camera.capture('faceimage.jpg')#拍照并保存
    time.sleep(2)
#对图片的格式进行转换
def transimage():
    f = open('faceimage.jpg','rb')
    img = base64.b64encode(f.read())
    return img
#上传到百度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 == '_01lihuaqiang':

                print("欢迎%s !" % name)
                time.sleep(3)
            if name == '_01jishiershi':
                print("欢迎%s !" % name)
                time.sleep(3)
            if name == "_01quhao":
                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
    if result['error_msg'] == 'pic not has face':
        print('检测不到人脸')
        time.sleep(2)
        return 0
    else:
        print(result['error_code']+' ' + result['error_code'])
        return 0
#主函数
if __name__ == '__main__':
    while True:
        print('准备')
        if True:
            getimage()#拍照
            img = transimage()#转换照片格式
            res = go_api(img)#将转换了格式的图片上传到百度云
            if(res == 1):#是人脸库中的人
                print("开门")
            else:
                print("关门")
            print('稍等三秒进入下一个')
            time.sleep(3)

因为没有买锁,因此用打印的提示信息来代替开锁,如果真的要做一个门禁可以买一个电磁锁,很方便的。

猜你喜欢

转载自blog.csdn.net/weixin_38241876/article/details/84842017