目 录
前 言 1
第 1 章 人脸识别系统概述 1
第 2 章 人脸检测技术 1
§2.1 基于 Harr 级联的人脸检测 2
§2.2 基于 face_recognition 开源库的人脸检测… 错误!未定义书签。第 3 章 人脸识别技术 5
§3.1 构造人脸数据集 5
§3.2 模型训练 7
§3.3 实时人脸识别 9
第 4 章 基于 PyQt5 的应用平台 10
总 结 12
附 录 14
1、人脸识别系统概述
人脸识别技术现在已经愈发成熟,有 OpenCV 的 Harr 分类器、Dlib 库等等,他们可以高精度实现人脸识别。本文希望运用已经成熟的技术搭建一个人脸识别系统的应用程序,通过摄像头采集图像,实现在线识别,并可以在线添加新的使用者,可以运用在电脑开机人脸检测等场景。本系统编程语言使用 Python3.7,在 PyCharm 平台上开发,主要依赖于 OpenCV 库函数,通过对采集到图像帧进行预处理、人脸检测、裁剪、最后再进行识别;再此基础上,再添加基于 PyQt 的应用程序框架,对系统进行完善,美化。
主要实现过程:
1)使用摄像头采集图像显示,并检测出人脸
2)实现在线生成数据集,对模型进行训练、识别
3)将程序封装在应用程序中
2、人脸检测技术
早期人们的主要研究对象是人脸识别,即只根据人脸来识别身份,但是
随着应用环境越来越复杂,人脸识别越来越困难。往往需要先将人脸提取出来进行裁剪、旋转、对齐等,再进行人脸识别。本文转载自http://www.biyezuopin.vip/onews.asp?id=15002本章主要采用 Harr 开源库、和 face_recognition 库分别进行人脸检测实验,并对比好坏。
在上面几个过程中我们已经实现了人脸实时检测和识别,并且在后台输出信息,但是这个界面效果不太好看,使用起来还要一个文件一个文件的去点,不方便。所以我们使用 PyQt5 库搭建 GUI 界面,并于之前的程序相结合打造一款不错的应用。
PyQt5 是一套 Python 绑定 Digia QT5 应用的框架,Qt 库是最强大的 GUI 库之一。为什么选择 qt 还有一个重要原因就是在 python 中依然可以使用 Qt Designer 来设计界面,这会很方便我们的调试过程。设计应用界面如图 4-1 所示。我们只需要编写简单的响应函数就可以把现在的界面和之前的程序串接起来。文章来源:https://www.toymoban.com/news/detail-444268.html
import sys
import cv2
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import QFileDialog, QMainWindow
from pyqt import * #引用界面文件
import recognition
class PyQtMainEntry(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.camera = cv2.VideoCapture(0) # 0-调用笔记本内置摄像头,1-调用usb摄像头
self.is_camera_opened = False # 摄像头有没有打开标记
# 定时器:30ms捕获一帧
self._timer = QtCore.QTimer(self)
self._timer.timeout.connect(self._queryFrame)
self._timer.setInterval(30)
def btnOpenCamera_Clicked(self):
'''
打开和关闭摄像头
'''
self.is_camera_opened = ~self.is_camera_opened
if self.is_camera_opened:#摄像头开着呢
self.camera = cv2.VideoCapture(0)
self.pushButton_2.setText("Close Camera")
self._timer.start()
else:
self.camera.release()
self.pushButton.setText("Open Camera")
self._timer.stop()
def btnCloseCamera_Clicked(self):
pass
@QtCore.pyqtSlot()
def _queryFrame(self):
'''
循环捕获图片
'''
self.frame = recognition.face_rec(self.camera)
# ret, self.frame = self.camera.read()
img_rows, img_cols, channels = self.frame.shape
bytesPerLine = channels * img_cols
cv2.cvtColor(self.frame, cv2.COLOR_BGR2RGB, self.frame)
QImg = QImage(self.frame.data, img_cols, img_rows,
bytesPerLine, QImage.Format_RGB888)
self.label.setPixmap(QPixmap.fromImage(self.frame).scaled(
self.label.size(), Qt.KeepAspectRatio, Qt.SmoothTransformation))
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
window = PyQtMainEntry()
window.show()
sys.exit(app.exec_())
文章来源地址https://www.toymoban.com/news/detail-444268.html
到了这里,关于基于PyQt5GUI的人脸识别系统设计与实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!