当前位置:   article > 正文

python人脸识别系统+ 深度学习Tensorflow +MySQL数据库(包含文档+源码+部署教程)_python调人脸识别+mysql+uniapp

python调人脸识别+mysql+uniapp

[毕业设计]2023-2024年最新最全计算机专业毕设选题推荐汇总

2023年 - 2024年 最新计算机毕业设计 本科 选题大全 汇总

感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人 。

1、项目介绍

项目技术: python语言 、 facenet人脸识别算法、 Tensorflow 、MySQL数据库

2、项目界面

(1)人脸识别界面(摄像头)

在这里插入图片描述

(2)识别统计
在这里插入图片描述

(3)识别记录

在这里插入图片描述

(4)MySQL数据库数据管理

在这里插入图片描述

(5)人脸录入
在这里插入图片描述

(6)管理员系统管理

在这里插入图片描述

3、项目说明

深度学习技术在人工智能领域中得到了广泛应用,而Tensorflow是一种流行的深度学习框架。本文将介绍如何使用Tensorflow和MySQL数据库来构建一个人脸识别系统。

人脸识别是一种基于人脸特征进行身份验证的技术。它可以用于各种应用,如安全门禁、人脸支付等。使用深度学习技术进行人脸识别可以提高准确性和鲁棒性。

首先,我们需要收集一组人脸图像作为训练数据。这些图像应包含不同人的照片,并标记每个图像对应的人物身份。可以使用开源数据集或自己收集数据。

接下来,使用Tensorflow来构建一个深度学习模型。可以使用facenet人脸识别算法,我们可以使其能够识别不同人的人脸。

在数据库方面,我们可以使用MySQL来存储人脸特征数据。每个人的人脸特征可以表示为一个向量,将其存储在数据库中。当需要进行人脸识别时,我们可以将输入的人脸图像提取特征,并与数据库中的人脸特征进行比对,从而确定身份。

为了提高人脸识别系统的性能,我们可以使用一些优化技术,如数据增强、模型调参等。此外,还可以使用GPU加速来加快模型的训练和推理速度。

总结一下,深度学习Tensorflow + MySQL数据库人脸识别系统是一种利用深度学习技术和数据库存储来构建人脸识别系统的方法。通过收集训练数据、构建深度学习模型和使用数据库存储人脸特征,我们可以实现一个准确、高效的人脸识别系统。

4、部分代码

(1)核心代码1



class LoginWin(QDialog, login.Ui_LoginWin):
    def __init__(self):
        super(LoginWin, self).__init__()
        self.setupUi(self)

    def showAdmin(self):
        account_num = self.numEdit.text()
        passwd = self.passwdEdit.text()
        dBase = dataBase()
        sql = "select count(*) from admin where account_num='%s' and passwd='%s'"%(account_num, passwd)
        result = dBase.fetchall(sql)[0]
        count = result[0]
        if count == 0:
            QMessageBox.information(self, '提示', '用户名或者密码错误', QMessageBox.Yes)
        else:
            self.close()
            adm = AdminWin()
            adm.show()
            adm.exec_()


class AddWin(QDialog, add_inf.Ui_AddWin):
    def __init__(self):
        super(AddWin, self).__init__()
        self.setupUi(self)

    # 添加员工
    def addStaff(self):
        dBase = dataBase()
        staffName = self.nameEdit.toPlainText()
        staffNum = self.numEdit.toPlainText()
        if staffName == '' or staffNum == '':
            QMessageBox.information(self, "信息录入", "请完善个人信息")
        else:
            flag = True
            sql = 'SELECT * FROM employees'
            result = dBase.fetchall(sql)
            for i in range(len(result)):
                if result[i][1] == staffNum:
                    flag = False
                    QMessageBox.information(self, "信息录入", "编号重复了!")
            if flag:
                if os.path.exists(image_path + staffNum):
                    if os.listdir(image_path + staffNum):
                        try:
                            sql = "insert into employees values('{0}', '{1}')".format(staffName, staffNum)
                            dBase.execute(sql)
                            face_feature, dimension = train()
                            bytes_feature = face_feature.tobytes()
                            matrix_dimension = pickle.dumps(dimension)
                            sql = "insert into facefeat (feature) values(%s)"
                            dBase.execute(sql, bytes_feature)
                            sql = "update facefeat set dimension=%s where id in (select a.id from (select max(id) as id from facefeat)a)"
                            dBase.execute(sql, matrix_dimension)
                            QMessageBox.information(self, "信息录入", "信息录入成功")
                        except:
                            QMessageBox.information(self, "信息录入", "信息录入失败")
                    else:
                        QMessageBox.information(self, "信息录入", "请录入个人照片")
                else:
                    QMessageBox.information(self, "信息录入", "请录入个人照片")

 



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68

(2)核心代码2

   # 录入照片
    def capFace(self):
        name = self.nameEdit.toPlainText()  # 获取普通文本
        num = self.numEdit.toPlainText()
        if not os.path.exists(image_path):
            os.mkdir(image_path)  # 如果没有存储相片的目录,则进行创建
        flag = True
        if name != '' and num != '':
            dBase = dataBase()
            sql = 'SELECT * FROM employees'
            result = dBase.fetchall(sql)
            for i in range(len(result)):
                if result[i][1] == num:
                    flag = False
                    QMessageBox.information(self, "信息录入", "编号重复了!")
            if flag:
                if not os.path.exists(image_path + num):
                    os.mkdir(image_path + num)  # 如果没有员工照片个人目录,则创建
                capture_face(num)
        else:
            QMessageBox.information(self, "信息录入", "请完善个人信息")  # 必须拥有两个参数

    # 从本地添加员工照片
    def addPhoto(self):
        name = self.nameEdit.toPlainText()  # 获取普通文本
        num = self.numEdit.toPlainText()
        if not os.path.exists(image_path):
            os.mkdir(image_path)  # 如果没有存储相片的目录,则进行创建
        flag = True
        if name != '' and num != '':
            dBase = dataBase()
            sql = 'SELECT * FROM employees'
            result = dBase.fetchall(sql)
            for i in range(len(result)):
                if result[i][1] == num:
                    flag = False
                    QMessageBox.information(self, "信息录入", "编号重复了!")
            if flag:
                f_name = QFileDialog.getOpenFileName(self, 'open file', '/', '*.jpg *.png')
                if f_name[0]:
                    try:
                        if not os.path.exists(image_path + num):
                            os.mkdir(image_path + num)  # 如果没有员工照片个人目录,则创建
                        image_name = open(f_name[0], 'r')
                        image = image_name.name  # 获取image路径
                        print('image', image)
                        dirs = image_path + num
                        print('dirs', dirs)
                        if image_face(image, dirs):
                            QMessageBox.information(self, "添加照片", "添加成功")
                        else:
                            QMessageBox.information(self, "检测不出人脸", "请重新换张照片")
                    except:
                        QMessageBox.information(self, "本地录入照片", "可能文件类型错误!")
        else:
            QMessageBox.information(self, "信息录入", "请完善个人信息")  # 必须拥有两个参数
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56

源码获取:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/123708
推荐阅读
相关标签