百度智能云API实现人脸识别
百度API实现人脸识别
- 创建API应用
- 1. 打开百度智能云
- 2. 选择人工智能中的人脸识别
- 3. 登入或者注册百度云账号
- 4. 创建应用
- 5. 添加人脸库
- 6.记录相关KEY
- 代码调用API实现人脸识别
创建API应用
1. 打开百度智能云
官网地址
https://cloud.baidu.com/
点击产品

2. 选择人工智能中的人脸识别


3. 登入或者注册百度云账号

4. 创建应用
登入后,点击应用列表,选择创建应用,输入应用名称及应用描述,


5. 添加人脸库





6.记录相关KEY
复制下APPID、API Key、Secret Key

应用创建就完成,接下来就是用代码调用API实现人脸识别
代码调用API实现人脸识别
更改自己创建应用的APPID、API Key、Secret Key,以及创建人脸数据库的用户组,就可以调用API实现人脸识别了
# 会保存拍照后的图片,然后编码为BASE64from aip import AipFace
import urllib.request
import base64
import time
import cv2# 百度人脸识别API账号信息
APP_ID = '******' # 应用的APP_ID
API_KEY = '************' # 应用的API_KEY
SECRET_KEY = '********' # 应用的SECRET_KEYclient = AipFace(APP_ID, API_KEY, SECRET_KEY)
IMAGE_TYPE = 'BASE64'
GROUP = '******' # 创建人脸数据库时的用户组名称# 全局复用摄像头对象(只初始化一次,减少耗时)
cap = cv2.VideoCapture(0)
# 提前设置摄像头分辨率(平衡速度和识别效果)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)# 优化拍照函数:复用摄像头,减少等待
def getimage():# 直接从已初始化的摄像头读取画面,无需重复打开ret, frame = cap.read()if not ret:print("摄像头读取失败")return False# 保存图片(可选:若无需本地保存,可直接编码为BASE64)cv2.imwrite('test.jpg', frame)print('拍照完成')return True# 图片格式转换(转为BASE64)
def transimage():with open('test.jpg', 'rb') as f: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 and name in ['xiaohua', 'xiaoming', 'lisi']:print(f"欢迎{name}!")return 1else:print("对不起,我不认识你!")return 0elif result['error_msg'] == 'pic not has face':print('检测不到人脸')return 0else:print(f"错误:{result['error_code']} {result['error_msg']}")return 0# 主函数:移除不必要的等待
if __name__ == '__main__':try:while True:print('准备开始识别...')# 拍照(复用摄像头,无额外等待)if not getimage():time.sleep(1) # 失败时短暂等待continue# 转换格式并识别img = transimage()res = go_api(img)if res == 1:print("开门")else:print("关门")print('稍等1秒进入下一轮识别') # 缩短间隔为1秒(可按需调整)time.sleep(1)finally:# 程序结束时释放摄像头(重要)cap.release()cv2.destroyAllWindows()
需要完整项目工程可私聊
