先注册一个百度云账号:
然后点击左上角的百度云进入首页:
在首页中选择产品,人工智能,人脸识别,点击进入:
选择立即使用:
在以下页面中由于没用应用,因此点击创建应用,然后直接写上应用名和应用描述就行了,人脸识别的功能都全部默认有了,由于我已经创建好了,因此我点击管理应用查看我的应用:
请务必记好你的AppID、API Key和Secret Key,在程序中我们将用它们作为唯一的标识,然后点击下载SDK进入以下界面:
我们选择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)
因为没有买锁,因此用打印的提示信息来代替开锁,如果真的要做一个门禁可以买一个电磁锁,很方便的。