想比之前的face_recognition人脸识别项目的优化有如下几点
1、用MySQL数据库存储人脸特征信息
2、调用网络摄像头识别人脸,将待识别的人物进行识别,并实时地与数据库中的人脸特征信息进行比对,同时判断出被识别者的身份。
3、把识别者的名字输出由英文变成了汉字
4、在dlib上启用了GPU加速
一、用MySQL数据库存储人脸特征信息(mysql的学习笔记)
对于MySQL数据库的操作采用Navicat可视化工具,数据库为test,表为face.设计结构如图:
database.py
import face_recognition
import pymysql
# 加载图像及获取人脸特征
def load_image(input_image, input_name):
# 加载本地图像文件到一个numpy ndarray类型的对象上
image = face_recognition.load_image_file(input_image)
# 返回图像中每个面的128维人脸编码
# 图像中可能存在多张人脸,取下标为0的人脸编码,表示识别出来的最清晰的人脸
image_face_encoding = face_recognition.face_encodings(image)[0]
# 将numpy array类型转化为列表
encoding__array_list = image_face_encoding.tolist()
# 将列表里的元素转化为字符串
encoding_str_list = [str(i) for i in encoding__array_list]
# 拼接列表里的字符串
encoding_str = ','.join(encoding_str_list)
# 被识别者姓名
name = input_name
# 将人脸特征编码存进数据库
save_encoding(encoding_str, name)
# 人脸特征信息保存
def save_encoding(encoding_str, name):
# 创建数据库连接对象
conn = pymysql.connect(
# 数据库的IP地址
host="localhost",
# 数据库用户名称
user="root",
# 数据库用户密码
password="123456",
# 数据库名称
db="test",
# 数据库端口名称
port=3306,
# 数据库的编码方式 注意是utf8
charset="utf8"
)
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = conn.cursor()
# SQL插入语句
insert_sql = "insert into face(name,encoding) values(%s,%s)"
try:
# 执行sql语句
cursor.execute(insert_sql, (name, encoding_str))
# 提交到数据库执行
conn.commit()
except Exception as e:
# 如果发生错误则回滚并打印错误信息
conn.rollbac