毕设项目——基于Qt、PYTHON智能校园防御系统应用程序,实现了摄像头数据采集、人脸识别、口罩识别、 数据统计等功能

毕设项目:基于Qt、PYTHON智能校园防御系统应用程序,实现了摄像头数据采集、人脸识别、口罩识别、 数据统计等功能

项目结构
在这里插入图片描述

在这里插入图片描述
环境选型

语言:Python
操作系统:Windows
数据库:MySQL
窗口界面:PyQT
API接口:百度AI接口,用以实现人脸登陆与注册

远程MySQL表结构

QQ图片20220411225513

远程表结构sql脚本

DROP TABLE IF EXISTS `access_record_table`;
CREATE TABLE `access_record_table` (
  record_id int(11) NOT NULL AUTO_INCREMENT  COMMENT '主键',
  has_mask enum('0','1') NOT NULL DEFAULT '0' COMMENT '是否佩戴口罩',
  access_time timestamp DEFAULT CURRENT_TIMESTAMP COMMENT '记录时间',
  place_id int(11) UNSIGNED NOT NULL DEFAULT '00000' COMMENT '设备id',
  stu_id int(1) int(11)  UNSIGNED NOT NULL DEFAULT '00000' COMMENT '学生id',
  PRIMARY KEY (record_id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

DROP TABLE IF EXISTS `place_table`;
CREATE TABLE `place_table` (
  place_id int,
  place_name varchar(32) DEFAULT NULL COMMENT '地点名字',
  place_time timestamp DEFAULT CURRENT_TIMESTAMP COMMENT '记录时间',
  foreign key(place_id) references access_record_table(place_id) on delete cascade on update cascade
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

DROP TABLE IF EXISTS `stu_table`;
CREATE TABLE `stu_table` (
  stu_id int,
  stu_name varchar(32) DEFAULT NULL COMMENT '学生名字',
  stu_status enum('0','1','2') NOT NULL DEFAULT '0' COMMENT '学生状态',
  stu_times timestamp DEFAULT CURRENT_TIMESTAMP COMMENT '记录时间',
  foreign key(stu_id) references access_record_table(stu_id) on delete cascade on update cascade
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

DROP TABLE IF EXISTS `usr_table`;
CREATE TABLE `usr_table` (
  stu_id int(11) NOT NULL AUTO_INCREMENT  COMMENT '主键',
  usr_name varchar(32) DEFAULT NULL COMMENT '用户名称',
  usr_pic varchar(32) DEFAULT NULL COMMENT '用户图片名称',
  usr_times timestamp DEFAULT CURRENT_TIMESTAMP COMMENT '记录时间',
  PRIMARY KEY (stu_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

项目背景

智能校园防御软件是实现了一款基于摄像头数据采集、人脸识别、口罩识别、 数据统计的预警系统,该种防御系统能够通过人脸识别进行管理员登录打卡,通过安装在教室内的固定摄像头,实时采集教室内上课同学的图像,判断是否有带口罩,从而在监控屏幕中予以标记提示警卫人员。采用 OpenCV/爬虫数据采集、利用 Numpy、Pandas 及特征工程、模型聚合进行数据预处理、CNN 模型训练框架。

部分源码:


```python
# *coding:utf-8 *
from Global import CONFIG
import pymysql


class CDbOpt:
    def __init__(self):
        """
        MySql操纵类函数的相关初始化数值
        """
        self.conn_mysql = pymysql.Connect(
            database=CONFIG["@mysql_opt"]["mysql_db"],
            user=CONFIG["@mysql_opt"]["mysql_user"],
            password=CONFIG["@mysql_opt"]["mysql_pwd"],
            host=CONFIG["@mysql_opt"]["mysql_host"],
            port=CONFIG["@mysql_opt"]["mysql_port"],
            charset=CONFIG["@mysql_opt"]["mysql_charset"],
        )

    def __del__(self):
        """
        析构函数: 关闭Sql连接
        """
        self.conn_mysql.close()

    def Db_Selete(self, *args, **kwargs):
        # 获取数据字段
        # 整理出sql
        # 调用db
        table = args[0]
        where_fields = ''
        data = kwargs.get('data')
        where_list = data.get('where_list')
        select_list = data.get('select_list')
        if where_list != None:
            del data['where_list']
        if select_list != None:
            del data['select_list']
        for k, v in data.items():
            if k in where_list:
                if where_fields == '':
                    where_fields += f"{k}='{v}'"
                else:
                    where_fields += f"and {k}='{v}'"
        fields = ','.join(select_list)

        cursor = self.conn_mysql.cursor()
        sql = f"""select {fields} from {table} where {where_fields}"""
        cursor.execute(sql)
        result = cursor.fetchall()
        return result

    def Db_SELECT_SQL(self, sql):
        # 获取数据字段
        # 整理出sql
        # 调用db
        cursor = self.conn_mysql.cursor()
        cursor.execute(sql)
        result = cursor.fetchall()
        return result

    def Db_Update_SQL(self, sql):
        # 调用sql
        cursor = self.conn_mysql.cursor()
        try:
            cursor.execute(sql)
            self.conn_mysql.commit()
            return True
        except Exception as e:
            print(e)
            self.conn_mysql.rollback()
            return False

    def Db_Update(self, *args, **kwargs):
        table = args[0]
        fields = ''
        where_fields = ''
        data = kwargs.get('data')
        where_list = data.get('where_list')
        select_list = data.get('select_list')
        if where_list != None:
            del data['where_list']
        if select_list != None:
            del data['select_list']
        for k, v in data.items():
            if k in where_list:
                if where_fields == '':
                    where_fields += f"{k}='{v}'"
                else:
                    where_fields += f"and {k}='{v}'"
            else:
                if fields == '':
                    fields += f"{k}='{v}'"
                else:
                    fields += f", {k}='{v}'"

        # 调用sql
        cursor = self.conn_mysql.cursor()
        sql = f"""update {table} set {fields} where {where_fields}"""
        try:
            cursor.execute(sql)
            self.conn_mysql.commit()
        except Exception as e:
            print(e)
            self.conn_mysql.rollback()


    def Db_Insert(self, *args, **kwargs):
        table = args[0]
        fields = ''
        where_fields = ''
        data = kwargs.get('data')
        where_list = data.get('where_list')
        select_list = data.get('select_list')
        if where_list != None:
            del data['where_list']
        if select_list != None:
            del data['select_list']
        num = 0
        for k, v in data.items():
            if num == 0:
                where_fields += f"{k}"
                fields += f"'{v}'"
            else:
                where_fields += f", {k}"
                fields += f", '{v}'"
            num += 1

        cursor = self.conn_mysql.cursor()
        sql = f"""insert into {table} ({where_fields}) values({fields})"""
        try:
            cursor.execute(sql)
            self.conn_mysql.commit()
            return True
        except Exception as e:
            print(e)
            self.conn_mysql.rollback()
            return False

    def Db_Delete(self, *args, **kwargs):
        table = args[0]
        fields = ''
        where_fields = ''
        data = kwargs.get('data')
        where_list = data.get('where_list')
        select_list = data.get('select_list')
        if where_list != None:
            del data['where_list']
        if select_list != None:
            del data['select_list']
        for k, v in data.items():
            if fields == '':
                fields += f"{k}='{v}'"
            else:
                fields += f", {k}='{v}'"
            if k in where_list:
                if where_fields == '':
                    where_fields += f"{k}='{v}'"
                else:
                    where_fields += f"and {k}='{v}'"

        cursor = self.conn_mysql.cursor()
        sql = f"""delete from {table} where {where_fields}"""
        try:
            cursor.execute(sql)
            self.conn_mysql.commit()
        except Exception as e:
            print(e)
            self.conn_mysql.rollback()





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

毕业小助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值