python人脸识别门禁系统毕设_人脸识别 宿舍门禁系统(python qt opencv带数据库)
源代码人脸识别宿舍门禁系统(pythonqtopencv带数据库)-深度学习文档类资源-CSDN下载download.csdn.net视频效果[video(video-16ReW6hG-1605924878152)(type-csdn)(url-https://live.csdn.net/v/embed/95485)(image-https://vedu.csdnimg.cn/8a4f68859
源代码人脸识别宿舍门禁系统(pythonqtopencv带数据库)-深度学习文档类资源-CSDN下载download.csdn.net
视频效果[video(video-16ReW6hG-1605924878152)(type-csdn)(url-https://live.csdn.net/v/embed/95485)(image-https://vedu.csdnimg.cn/8a4f688593504c7ba9fcf86c44a682bc/snapshots/eb492bcc2f7a44e394b850524dc8e794-00005.jpg)(title-人脸识别 宿舍门禁系统( pyqt opencv带数据库))]live.csdn.net
一.界面设计 使用Qt Designer(源代码内有设计文件ui):
二.人脸检测模块 opencv-dnn
OpenCV在DNN模块中提供了基于残差SSD网络训练的人脸检测模型,该模型分别提供了tensorflow版本,caffe版本,torch版本模型文件。
其中tensorflow版本的模型做了更加进一步的压缩优化,大小只有2MB左右,非常适合移植到移动端使用,实现人脸检测功能,而caffe版本的是fp16的浮点数模型,精准度更好。
对比传统人脸检测,同样一张图像,在OpenCV HAAR与LBP级联检测器中必须通过不断调整参数才可以检测出全部人脸,而通过使用该模型,基本在Python语言中基于OpenCV后台的推断,在25毫秒均可以检测出结果,网络支持输入size大小为300x300。
def getface(img,net):
# 置信度参数,高于此数才认为是人脸,可调
confidence = 0.3
(h, w) = img.shape[:2] # 获取图像的高和宽,用于画图
blob = cv2.dnn.blobFromImage(cv2.resize(img, (300, 300)), 1.0,(300, 300), (104.0, 177.0, 123.0))
# blobFromImage待研究
net.setInput(blob)
# 预测结果
detections = net.forward()
maxFace = []
# 在原图加上标签和框
for i in range(0, detections.shape[2]):
# 获得置信度
res_confidence = detections[0, 0, i, 2]
# 过滤掉低置信度的像素
if res_confidence > confidence:
# 获得框的位置
box = detections[0, 0, i, 3:7] * np.array([w, h, w, h])
(startX, startY, endX, endY) = box.astype("int")
startX = 0 if startX<0 else startX
startY = 0 if startY<0 else startY
if endX>w:
return
if endY>h:
return
print(startX, startY, endX, endY)
return startX, startY, endX, endY
三.人脸识别模块 LBPHFaceRecognizer
基于LBP算子的人脸识别算法:
LBP被运用于计算机人脸识别领域时,提取出来的人脸特征通常是以LBP直方图向量进行表达的。 1. 对预处理后的人脸图像进行分块 2. 对分块后的各小块图像区域进行LBP特征提取变换 3. 使用LBP直返图向量作为人脸特征的描述。
一般分块数越多,人脸表达的效果就会越好,但是分块数越多,会直接导致特征向量维数的增加,会增加计算的复杂度。对每个分块计算LBP值的直方图,然后将所有分块直方图进行连接得到最终的直方图特征向量,这个特征向量代表原来的人脸图像,可以用来描述整体图像。
对于这个融合的直方图,我们进行特征分类。 如果训练样本数量越大,分类的效果也会越好,
LBPH的预测进程 预测进程就比较简单了,首先将待查询点图象进行lbp编码并生成空间直方图,然后线性暴力的计算直方图的距离,采用基于直方图的相似性度量的最近邻分类方法来分类
id, lbphconfidence = LBPH.predict(gray) #识别人脸
四.数据库 sqlite
qq群686070107
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)