Python PyQt5 人脸识别软件

这篇具有很好参考价值的文章主要介绍了Python PyQt5 人脸识别软件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Python PyQt5 人脸识别软件,python,qt,开发语言

# !/usr/bin/python3
# -*- coding:utf-8 -*-
"""
@author: JHC000abc@gmail.com
@file: untitled_ctrl.py
@time: 2023/8/6 16:29
@desc:

"""
import copy
import threading
import time
import traceback
import uuid
import os
import cv2
from gui.ui.untitled import Ui_widget
from PyQt5 import QtWidgets
from PyQt5.QtCore import pyqtSignal
from PyQt5.QtGui import QPixmap, QImage
from threading import Thread
from queue import Queue
import numpy
import PyQt5


class UntitledCtrl(QtWidgets.QWidget):
    """

    """
    single_frame = pyqtSignal(PyQt5.QtGui.QImage)

    def __init__(self, rootpath):
        super(UntitledCtrl, self).__init__()

        self.rootpath = rootpath

        self.resize(980, 521)

        self.ui = Ui_widget()
        self.ui.setupUi(self)
        print(rootpath)

        self.img_que = Queue()

        self.ui.pushButton_cut.hide()

        self._flag()
        self._slot()
        self._thread()

    def _thread(self):
        t = Thread(target=self.camera)
        t.start()
        t2 = Thread(target=self.show_img)
        t2.start()

    def _flag(self):
        self.flag_start = True
        self.flag_face = True
        self.cap = None
        self.pause = False
        self.frame = ""
        self.cut = ""

    def _slot(self):
        self.ui.pushButton_start.clicked.connect(self.start_pause)
        self.ui.pushButton_check_face.clicked.connect(self.face_check)

        self.single_frame.connect(self.th_show)

    def th_show(self, img):
        if img:
            try:
                self.ui.label_camera.setPixmap(QPixmap(img))
            except BaseException:
                pass

    def show_img(self):
        """

        :return:
        """
        while True:
            try:
                if not self.img_que.empty():
                    img, nums = self.img_que.get()
                    for i in range(nums):
                        self.single_frame.emit(img)
                        time.sleep(0.01)
            except Exception as e:
                print("e2", e)
                time.sleep(0.01)

    def add_face_box(self):
        """

        :return:
        """
        flag = False
        if self.flag_start:
            if self.frame is not None:
                self.cut = copy.deepcopy(self.frame)
                try:
                    if self.flag_face:
                        for x, y, w, h in self.get_face_opt():
                            try:
                                self.cut = cv2.rectangle(
                                    img=self.cut,
                                    pt1=(x, y),
                                    pt2=(x + w, y + h),
                                    color=(0, 0, 255),
                                    thickness=2,
                                    lineType=cv2.INTER_LINEAR,
                                )
                                flag = True
                            except BaseException:
                                pass

                    image = cv2.cvtColor(self.cut, cv2.COLOR_RGB2BGR)
                    self.cut = QImage(
                        image.data,
                        image.shape[1],
                        image.shape[0],
                        QImage.Format_RGB888)
                    if flag:
                        self.img_que.put([self.cut, 30])
                    else:
                        self.img_que.put([self.cut, 1])

                except Exception as e:
                    print("e1", str(traceback.print_exc()))

    def camera(self):
        """

        :return:
        """
        try:
            if not self.cap:
                self.cap = cv2.VideoCapture(0)  # 使用默认摄像头
            if not self.cap.isOpened():
                print("无法打开摄像头")
                exit()
            while not self.pause:
                ret, self.frame = self.cap.read()
                if not ret:
                    print("无法读取视频流")
                    break
                else:
                    self.add_face_box()
            self.cap.release()
        except Exception as e:
            print(traceback.print_exc())

    def get_face_opt(self):
        """

        :return:
        """
        face_cascade = cv2.CascadeClassifier(
            cv2.data.haarcascades +
            'haarcascade_frontalface_default.xml')
        try:
            faces = face_cascade.detectMultiScale(self.cut, 1.1, 4)

            for (x, y, w, h) in faces:
                yield x, y, w, h
        except BaseException:
            pass

    def start_pause(self):
        """

        :return:
        """
        if self.flag_start:
            self.ui.pushButton_start.setText("暂停")
            self.flag_start = False
        else:
            self.ui.pushButton_start.setText("开始")
            self.flag_start = True

    def face_check(self):
        """

        :return:
        """
        if self.flag_face:
            self.flag_face = False
            self.ui.pushButton_check_face.setText("暂停识别")
        else:
            self.flag_face = True
            self.ui.pushButton_check_face.setText("识别人脸")

    def save(self):
        file = "gui/res/{}.png".format(uuid.uuid4())
        cv2.imencode(
            ".{}".format(".{}".format(os.path.splitext(file)[-1])), self.frame)[1].tofile(file)





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

# Form implementation generated from reading ui file 'untitled.ui'
#
# Created by: PyQt5 UI code generator 5.15.9
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_widget(object):
    def setupUi(self, widget):
        widget.setObjectName("widget")
        # widget.resize(836, 521)
        self.horizontalLayout = QtWidgets.QHBoxLayout(widget)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.stackedWidget = QtWidgets.QStackedWidget(widget)
        self.stackedWidget.setObjectName("stackedWidget")
        self.page = QtWidgets.QWidget()
        self.page.setObjectName("page")
        self.gridLayout = QtWidgets.QGridLayout(self.page)
        self.gridLayout.setObjectName("gridLayout")
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.label_camera = QtWidgets.QLabel(self.page)
        self.label_camera.setStyleSheet("border-width: 3px;\n"
"border-style: dot-dot-dash;\n"
"border-color: purple;\n"
"border-radius: 50px;\n"
"")
        self.label_camera.setText("")
        self.label_camera.setObjectName("label_camera")
        self.horizontalLayout_2.addWidget(self.label_camera)
        spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem)
        self.frame = QtWidgets.QFrame(self.page)
        self.frame.setStyleSheet("border-width: 3px;\n"
"border-style: dot-dot-dash;\n"
"border-color: purple;\n"
"border-radius: 50px;\n"
"")
        self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame.setObjectName("frame")
        self.pushButton_start = QtWidgets.QPushButton(self.frame)
        self.pushButton_start.setGeometry(QtCore.QRect(100, 20, 93, 28))
        self.pushButton_start.setStyleSheet("border-style: solid;\n"
"border-color:purple;")
        self.pushButton_start.setObjectName("pushButton_start")
        self.pushButton_cut = QtWidgets.QPushButton(self.frame)
        self.pushButton_cut.setGeometry(QtCore.QRect(100, 80, 93, 28))
        self.pushButton_cut.setStyleSheet("border-style: solid;\n"
"border-color:purple;")
        self.pushButton_cut.setObjectName("pushButton_cut")
        self.pushButton_check_face = QtWidgets.QPushButton(self.frame)
        self.pushButton_check_face.setGeometry(QtCore.QRect(100, 140, 93, 28))
        self.pushButton_check_face.setStyleSheet("border-style: solid;\n"
"border-color:purple;")
        self.pushButton_check_face.setObjectName("pushButton_check_face")
        self.horizontalLayout_2.addWidget(self.frame)
        self.horizontalLayout_2.setStretch(0, 150)
        self.horizontalLayout_2.setStretch(1, 1)
        self.horizontalLayout_2.setStretch(2, 100)
        self.gridLayout.addLayout(self.horizontalLayout_2, 0, 0, 1, 1)
        self.stackedWidget.addWidget(self.page)
        self.page_2 = QtWidgets.QWidget()
        self.page_2.setObjectName("page_2")
        self.stackedWidget.addWidget(self.page_2)
        self.horizontalLayout.addWidget(self.stackedWidget)

        self.retranslateUi(widget)
        QtCore.QMetaObject.connectSlotsByName(widget)

    def retranslateUi(self, widget):
        _translate = QtCore.QCoreApplication.translate
        widget.setWindowTitle(_translate("widget", "FaceCheck"))
        self.pushButton_start.setText(_translate("widget", "启动"))
        self.pushButton_cut.setText(_translate("widget", "截图"))
        self.pushButton_check_face.setText(_translate("widget", "识别人脸"))


# !/usr/bin/python3
# -*- coding:utf-8 -*-
"""
@author: JHC000abc@gmail.com
@file: main.py
@time: 2023/8/6 16:31
@desc: 

"""
from gui.ctrl.untitled_ctrl import UntitledCtrl
import os
import sys
from PyQt5 import QtWidgets
from PyQt5.QtCore import QCoreApplication, Qt
from qt_material import apply_stylesheet


if __name__ == "__main__":
    root_path = os.getcwd()
    QCoreApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
    app = QtWidgets.QApplication(sys.path)
    try:
        apply_stylesheet(app, theme="dark_teal.xml")
    except BaseException:
        print("样式加载失败")

    Form = UntitledCtrl(root_path)
    Form.show()
    sys.exit(app.exec_())





haarcascade_frontalface_default.xml
密码:JDBC

2文章来源地址https://www.toymoban.com/news/detail-631247.html

到了这里,关于Python PyQt5 人脸识别软件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 人脸识别系统OpenCV+dlib+python(含数据库)Pyqt5界面设计 项目源码 毕业设计

    Python语言、dlib、OpenCV、Pyqt5界面设计、sqlite3数据库      本系统使用dlib作为人脸识别工具,dlib提供一个方法可将人脸图片数据映射到128维度的空间向量,如果两张图片来源于同一个人,那么两个图片所映射的空间向量距离就很近,否则就会很远。因此,可以通过提取图片并

    2024年02月05日
    浏览(68)
  • python、pyqt5实现人脸检测、性别和年龄预测

    摘要:这篇博文介绍基于opencv:DNN模块自带的残差网络的人脸、性别、年龄识别系统,系统程序由OpenCv, PyQt5的库实现。如图系统可通过摄像头获取实时画面并识别其中的人脸表情,也可以通过读取图片识别,本文提供完整的程序文件并详细介绍其实现过程。博文要点如下:

    2024年02月07日
    浏览(96)
  • 基于opencv和PyQt5的人脸识别

    目    录 一、准备工作 二、分割任务 三、代码实现阶段 1、基于opencv读取照片 2、在图片上绘制矩形 3、在读取照片成功的前提下理解视频的本质,读取视频 4、在视频上绘制矩形 5、调用人脸识别模块  6、动态调整矩形,让矩形通过人脸识别算法追踪人脸 7、调用Qt组件,创

    2024年02月03日
    浏览(52)
  • 打架识别(AI+Python+PyQt5)(一)

            最近做了一个打架识别的项目,有感于当时开发资料的匮乏,特做一个小结,供大家参考。闲话少叙,看看效果先。                              目前打架检测,主要有3种主流的方法,分别是: (1)基于Detection的打架检测。其主要思想是: 将打架作为一种

    2023年04月08日
    浏览(31)
  • 基于PyQt5GUI的人脸识别系统设计与实现

    目 录 前 言 1 第 1 章 人脸识别系统概述 1 第 2 章 人脸检测技术 1 §2.1 基于 Harr 级联的人脸检测 2 §2.2 基于 face_recognition 开源库的人脸检测… 错误!未定义书签。第 3 章 人脸识别技术 5 §3.1 构造人脸数据集 5 §3.2 模型训练 7 §3.3 实时人脸识别 9 第 4 章 基于 PyQt5 的应用平台 1

    2024年02月04日
    浏览(48)
  • mac python3.9安装pyqt5、qt5、pyqt5-tools

    pyqt6安装参考 PyQT6:看这一篇就够了 python PyQt6 常用操作以及常见问题解决 pycharm配置tools 参考链接 以下pip命令自行更具自己环境选择pip或pip3 在安装pyqt前必须先安装sip包 完成sip的安装后,安装pyqt和pyqt-tools, 可以直接使用命令: 若是使用pip3安装报错 AttributeError: module ‘sipb

    2024年02月14日
    浏览(47)
  • Python - PyQT5开发UI界面 - 环境搭建

    没有做过UI界面的都会把UI的制作想象的很神秘,我在刚开始的时候也是感觉异常神秘、很复杂、并且无从下手,不过在真正的做出来一个界面后,发现也并没有想象中的那么难,而且做出来可视化的东西所带来的成就感是超越代码本身的;不过整个过程也并不顺利,网上都是

    2023年04月23日
    浏览(49)
  • python中的yolov5结合PyQt5,使用QT designer设计界面没正确启动的解决方法

    一、窗体设计test: 默认你已经设计好了窗体后: 这时你需要的是保存生成的untitle.ui到某个文件夹下,然后在命令行中奖.ui转换为.py(,通过​​pyqt5​​​提供的转换工具,将​​ui​​​文件转换成​​python​​的代码) 或者使用在PyCharm中安装的工具: 然后你会看到mai

    2024年02月07日
    浏览(50)
  • 【深度学习】基于Qt的人脸识别系统,门禁人脸识别系统,Python人脸识别流程,树莓派

    在深度学习领域做人脸识别的识别准确率已经高到超出人类识别,但综合考虑模型复杂度(推理速度)和模型的识别效果,这个地方还是有做一些工作的需求的。 人脸识别的过程基本由下面的流程组成。 yolov5-face、yolov7-face等github项目都可以做到这一点,在公开数据集上训练

    2024年02月09日
    浏览(50)
  • Python+Qt人脸识别门禁管理系统

    程序示例精选 Python+Qt人脸识别门禁管理系统 如需安装运行环境或远程调试,见文章底部个人 QQ 名片,由专业技术人员远程协助! 这篇博客针对Python+Qt人脸识别门禁管理系统编写代码,代码整洁,规则,易读。 学习与应用推荐首选。 一、所需工具软件 二、使用步骤     

    2023年04月25日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包