资源简介

本资源是基于树莓派的人脸识别门禁系统的源码,带有界面的系统,使用的是python2.7+OpenCV3.4.0+PyQt5进行开发,具有检测人脸、录入人脸、训练人脸和人脸识别开门的功能,具体可参见博客:https://blog.csdn.net/One_L_Star/article/details/99837868

资源截图

代码片段和文件信息


# -*- coding: utf-8 -*-

import sys
import cv2
import threading
from PyQt5.QtCore import QBasicTimer
from PyQt5.QtCore import *
from PyQt5.QtWidgets import QApplication QWidget QPushButton QLabel QLineEdit QGridLayout QMessageBox QGroupBox
from PyQt5 import QtWidgets
from PyQt5 import QtCore QtGui QtWidgets
from PyQt5.QtWidgets import QWidget QLabel QApplication
from PIL import Image
import numpy as np
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import QPalette QBrush QPixmap
import os
import RPi.GPIO as GPIO

# 定义人脸标签和初始化标签对应的人物名称
id = 0
names = [‘None‘ ‘oneStar‘ ‘LR‘ ‘GuoMo‘ ‘FeiGe‘]

# 导入GPIO
import RPi.GPIO as GPIO     
# 设置GPIO模式,BCM模式在所有数码派通用
GPIO.setmode(GPIO.BCM) 
# 设置GPIO25为电流输出  
GPIO.setup(25 GPIO.OUT)   


# 导入OpenCV自带的数据集,定义多个是因为在后面有多次调用,用一个的话会报错
faceCascade = cv2.CascadeClassifier(‘/home/pi/Downloads/opencv-3.4.0/data/haarcascades/haarcascade_frontalface_default.xml‘)
faceCascade2 = cv2.CascadeClassifier(‘/home/pi/Downloads/opencv-3.4.0/data/haarcascades/haarcascade_frontalface_default.xml‘)
faceCascade3 = cv2.CascadeClassifier(‘/home/pi/Downloads/opencv-3.4.0/data/haarcascades/haarcascade_frontalface_default.xml‘)

# 继承QLineEdit,重写mouseReleaseEvent函数
class mylineedit(QLineEdit):
    clicked = pyqtSignal()  # 定义clicked信号

    def mouseReleaseEvent(self QMouseEvent):
        if QMouseEvent.button() == Qt.LeftButton:
            self.clicked.emit()  # 发送clicked信号


# 创建主界面类
class Ui_Menu(QWidget):
    def __init__(self):
        super(Ui_Menu self).__init__()
        # 创建label并设置文本内容
        self.label = QLabel(‘欢迎使用人脸识别门禁系统‘ self)
        # 创建普通用户和管理员按键
        self.btn_ordinary = QPushButton(‘普通用户‘ self)
        self.btn_admin = QPushButton(‘管理员‘ self)

        # 初始化界面
        self.init_ui()

    def init_ui(self):
        # 设置窗口大小
        self.resize(1280 800)
        # 设置label框的位置
        self.label.move(140 200)
        
        # 设置按键框的位置和大小
        self.btn_ordinary.setGeometry(550 420 181 61)
        self.btn_admin.setGeometry(550 510 181 61)
        
        # 设置label样式(字体、大小、颜色等)
        self.label.setstyleSheet(
            “QLabel{color:rgb(000255);“  # 字体颜色为黑色
            “font-size:82px;font-weight:bold;“  # 大小为70 加粗
            “font-family:Roman times;}“)  # Roman times字体

        self.btn_ordinary.setstyleSheet(
            “QPushButton{color:rgb(000255);“  # 字体颜色为黑色
            “font-size:30px;“  # 大小为30 
            “font-family:Roman times;}“)  # Roman times字体

        self.btn_admin.setstyleSheet(
            “QPushButton{color:rgb(000255);“  # 字体颜色为黑色
            “font-size:30px;“  # 大小为30 
            “font-family:Roman times;}“)  # Roman times字体

        # 点击管理员按钮事件
        self.btn_admin.clicked.connect(self.slot_btn_admin)
        # 点击普通用户按钮事件
        self.btn_ordinary.clicked.connect(self.slot_btn_ordinary)

    # 点点击管理员按钮事件
    def slot_btn_admin(self):
        self.logon = Ui_logon()
        self.logon.showFullScreen()
        self.hide

评论

共有 条评论