Resumo do blog: Python | Sistema de reconhecimento facial — Índice do blog
Endereço do GitHub: Su-Face-Recognition
Nota: Consulte antes de ler este blog
Instalação da ferramenta, configuração do ambiente: Python | Sistema de reconhecimento facial—Introdução
Design de interface de interface do usuário: Python | Sistema de reconhecimento facial — Design de interface de interface do usuário
Processamento de eventos da interface do usuário: Python | Sistema de reconhecimento facial - processamento de eventos da interface do usuário
1. Operação do banco de dados
# -*- coding: utf-8 -*-
import pymysql
def init_conn():
conn = pymysql.connect(
host="127.0.0.1", # 数据库的IP地址
user="root", # 数据库用户名称
password="root", # 数据库用户密码
db="contest", # 数据库名称
port=3306, # 数据库端口名称
charset="utf8" # 数据库的编码方式
)
return conn
def execute_with_bool(sql_str, args=()):
conn = init_conn()
cursor = conn.cursor()
try:
cursor.execute(sql_str, args)
conn.commit()
return True
except Exception as e:
conn.rollback()
print(e)
return False
finally:
cursor.close()
def execute_with_list(sql_str):
conn = init_conn()
cursor = conn.cursor()
results = []
try:
cursor.execute(sql_str)
results = cursor.fetchall()
except Exception as e:
conn.rollback()
print(e)
finally:
cursor.close()
return results
def search_by_name(name):
return execute_with_list("select * from admin where name = " + name)
def delete_by_name(name):
return execute_with_bool("delete from warn where name = %s", name)
2. Login do administrador
# 管理员登录界面
class LoginWindow(QDialog, AdminLoginUi):
def __init__(self, parent=None):
super(LoginWindow, self).__init__(parent)
self.setupUi(self)
self.minimize_button.clicked.connect(self.showMinimized)
self.close_button.clicked.connect(self.cancel_login)
self.confirm_button.clicked.connect(self.search_user)
self.cancel_button.clicked.connect(self.cancel_login)
# 点击确认,搜索管理员
def search_user(self):
input_name = self.name_lineEdit.text()
input_password = self.password_lineEdit.text()
if input_name == "":
QMessageBox.about(self, '提示', '姓名不能为空')
elif input_password == "":
QMessageBox.about(self, '提示', '密码不能为空')
else:
row = AdminSqlUtil.search_by_name("\"" + input_name + "\"")
if row:
result = row[0]
password = result[1]
if input_password != password:
QMessageBox.about(self, '提示', '密码输入错误')
else:
global ADMIN_LOGIN_FLAG
ADMIN_LOGIN_FLAG = True
QMessageBox.about(self, '提示', '登录成功')
self.close_window()
else:
QMessageBox.about(self, '提示', '该用户不存在')
# 点击取消按钮
def cancel_login(self):
global ADMIN_LOGIN_FLAG
ADMIN_LOGIN_FLAG = False
self.close_window()
# 关闭窗口
def close_window(self):
self.name_lineEdit.setPlaceholderText("请输入姓名")
self.password_lineEdit.setPlaceholderText("请输入密码")
self.close()
3. Desbloqueio do usuário
# 用户解锁
class UnloadWindow(QDialog, AdminUnloadUi):
def __init__(self, parent=None):
super(UnloadWindow, self).__init__(parent)
self.setupUi(self)
self.minimize_button.clicked.connect(self.showMinimized)
self.close_button.clicked.connect(self.close_window)
self.confirm_button.clicked.connect(self.unload_user)
self.cancel_button.clicked.connect(self.close_window)
# 解锁用户
def unload_user(self):
input_name = self.name_lineEdit.text()
input_password = self.password_lineEdit.text()
if input_name == "":
QMessageBox.about(self, '提示', '姓名不能为空')
elif input_password == "":
QMessageBox.about(self, '提示', '密码不能为空')
else:
row = UserSqlUtil.search_by_name("\"" + input_name + "\"")
if row:
result = row[0]
password = result[1]
if input_password != password:
QMessageBox.about(self, '提示', '密码输入错误')
else:
if AdminSqlUtil.delete_by_name(row[0]):
QMessageBox.about(self, '提示', '解锁成功')
else:
QMessageBox.about(self, '提示', '解锁失败,请重试')
self.close_window()
else:
QMessageBox.about(self, '提示', '该用户不存在')
# 关闭窗口
def close_window(self):
self.name_lineEdit.setPlaceholderText("请输入姓名")
self.password_lineEdit.setPlaceholderText("请输入密码")
self.close()
4. Exclusão de usuário
# 用户删除
class DeleteWindow(QDialog, AdminDeleteUi):
def __init__(self, parent=None):
super(DeleteWindow, self).__init__(parent)
self.setupUi(self)
self.minimize_button.clicked.connect(self.showMinimized)
self.close_button.clicked.connect(self.close_window)
self.confirm_button.clicked.connect(self.user_delete)
self.cancel_button.clicked.connect(self.close_window)
def user_delete(self):
input_name = self.name_lineEdit.text()
input_password = self.password_lineEdit.text()
if input_name == "":
QMessageBox.about(self, '提示', '姓名不能为空')
elif input_password == "":
QMessageBox.about(self, '提示', '密码不能为空')
else:
row = UserSqlUtil.search_by_name("\"" + input_name + "\"")
if row:
result = row[0]
password = result[1]
if input_password != password:
QMessageBox.about(self, '提示', '密码输入错误')
else:
flag = UserSqlUtil.delete_by_name(input_name)
if flag:
QMessageBox.about(self, '提示', '删除成功')
else:
QMessageBox.about(self, '提示', '删除失败,请重试')
self.close_window()
else:
QMessageBox.about(self, '提示', '该用户不存在')
# 关闭窗口
def close_window(self):
self.name_lineEdit.setPlaceholderText("请输入姓名")
self.password_lineEdit.setPlaceholderText("请输入密码")
self.close()
continue lendo:
Exibição da tela da câmera: sistema de reconhecimento facial - exibição da tela da câmera
Lógica do lado do cliente:
- Reconhecimento facial: Python | Sistema de reconhecimento facial — Reconhecimento facial
- Detecção de vivacidade: Python | Sistema de reconhecimento facial - Detecção de vivacidade
- Desfoque de fundo: Python | Sistema de reconhecimento facial - Desfoque de fundo
- Detecção de pose: Python | Sistema de reconhecimento facial - Detecção de pose
- Comparação facial: Python | Sistema de reconhecimento facial - comparação facial
- Operações do usuário: Python | Sistema de reconhecimento facial—Operações do usuário
Observação: o código acima é apenas para referência. Para executá-lo, consulte o código-fonte do GitHub: Su-Face-Recognition