python3+opencv+PyMySQL实现人脸识别

本文介绍了如何使用Python3、OpenCV和PyMySQL构建一个人脸识别系统。通过Opencv进行图像识别和摄像头调用,利用PyMySQL存储用户信息。首先创建Picture_resources文件夹并抓取人脸数据,接着生成Trainer文件夹并创建LBPHFaceRecognizer模型。最后,系统通过摄像头进行人脸识别,并显示识别结果。用户需预先下载MySQL数据库,并设置登陆密码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

今天带来的是基于Opencv(c++底层编译)的人脸识别,再利用PyMySQL实现对数据的储存。
具体步骤是:
在这里插入图片描述
使用到的库,模块有
①CV2(Opencv):图像识别,摄像头调用
②os:文件操作
③numpy:NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库
④PIL:Python Imaging Library,Python平台事实上图像处理的标准库
⑤PyMySQL:用户信息存储(可以用 Navicat for MySQL来可视化操作)

当然电脑应该先下载mysql数据库,本次默认的是使用mysql自带的test数据库,具体参数也可自行修改,下载教程百度有,使用可以看我另一篇博文
建议用pip命令时使用清华镜像网站,否则下载可能很慢
pip install [名字] -i https://pypi.tuna.tsinghua.edu.cn/simple

还需要下载Opencv提供的人脸模型特征数据 版本自己选择,还有显示的字体(simsun.ttc文件)应该放到py文件的同个目录 下载网址是下载地址
Opencv官网
下载完后将 ./data/haarcascades/haarcascade_frontalface_default.xml 复制到跟py文件同个目录
在这里插入图片描述
在这里插入图片描述

首先

首先应该在py文件的目录里面创建一个名为Picture_resources的子文件夹,当然可以修改代码中的生成文件目录
先是对人脸数据的抓取,然后生成一帧一帧的人脸灰度图片储存起来,过程中还应该将用户输入的信息对应储存到MySQL数据库里面

import datetime
import os
import shutil
import time
import cv2 as cv
import numpy as np
import pymysql
'''
@Author:Himit_ZH
@Date: 2020.3.1
'''
#与数据库进行数据连接
def PutDatatoSql(sname,sno):
    flag = 1
    con = pymysql.connect(host='localhost', password='123456', user='root', port=3306,db='facedata')
    # 创建游标对象
    cur = con.cursor()
    # 判断是否存在库
    #判断是否存在表 无则自动创建
    sql1 = r'''
                CREATE TABLE IF NOT EXISTS t_stu (
                id int PRIMARY KEY NOT NULL auto_increment,
                sname VARCHAR(20) NOT NULL,
                sno VARCHAR(14) NOT NULL,
                created_time DATETIME )
                 '''
    cur.execute(sql1)
    # 编写查询数据的sql
    sql2 = 'select * from t_stu where sname=%s and sno=%s'
    try:
        cur.execute(sql2,args=(sname,sno))
        con.commit()
        # 处理结果集
        student = cur.fetchall()
        if student:
            con.close()
            flag = 2
            return flag
    except Exception as e:
        print(e)
        print('查询数据失败')
        flag = 0
        return flag
    # 编写插入数据的sql
    sql3 = 'insert into t_stu(sname,sno,created_time) values(%s,%s,%s)'
    dt = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    try:
        # 执行sql
        cur.execute(sql3, (sname,sno,dt))
        # 提交事务
        con.commit()
        print('插入数据成功')
        return flag
    except Exception as e:
        print(e)
        con.rollback()
        print('插入数据失败')
        flag = 0
        return flag
    finally:
        # 关闭连接
        con.close()



if __name__ == '__main__':
    while True:
        face_id = input('请输入学号:')
        face_name = input('请输入姓名:')
        result = PutDatatoSql(face_name, face
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值