我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python PyQt5 人脸识别软件

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python PyQt5 人脸识别软件

在这里插入图片描述

# !/usr/bin/python3# -*- coding:utf-8 -*-"""@author: JHC000abc@gmail.com@file: untitled_ctrl.py@time: 2023/8/6 16:29@desc:"""import copyimport threadingimport timeimport tracebackimport uuidimport osimport cv2from gui.ui.untitled import Ui_widgetfrom PyQt5 import QtWidgetsfrom PyQt5.QtCore import pyqtSignalfrom PyQt5.QtGui import QPixmap, QImagefrom threading import Threadfrom queue import Queueimport numpyimport PyQt5class 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 = Trueexcept 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, QtWidgetsclass 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 UntitledCtrlimport osimport sysfrom PyQt5 import QtWidgetsfrom PyQt5.QtCore import QCoreApplication, Qtfrom qt_material import apply_stylesheetif __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://blog.csdn.net/CXY00000/article/details/132137633

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python PyQt5 人脸识别软件

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python 人脸识别 OpenCV (

■环境Python 3.6.0Pycharm 2017.1.3■库、库的版本OpenCV 3.4.1 (cp36)■haarcascades下载https://github.com/opencv/opencv/tree/master/dat
2023-01-31

python实现人脸识别代码

从实时视频流中识别出人脸区域,从原理上看,其依然属于机器学习的领域之一,本质上与谷歌利用深度学习识别出猫没有什么区别。程序通过大量的人脸图片数据进行训练,利用数学算法建立建立可靠的人脸特征模型,如此即可识别出人脸。幸运的是,这些工作Open
2022-06-04

Python视频人脸检测识别

案例这里我们还是使用 opencv 中自带了 haar人脸特征分类器,通过读取一段视频来识别其中的人脸。代码实现: 动图有点花,讲究着看吧: 如果是捕捉摄像头,只需要改变以下代码即可:cap = cv2.VideoCapture(0)
2023-01-31

人脸识别和人脸认证,有什么区别

人脸识别和人脸认证是两个不同的概念。人脸识别是指通过计算机视觉技术,将人脸图像与已知的人脸数据库进行比对,从而确定人脸的身份。这种技术可以用于从人群中识别出某个特定的人,或者用于在设备上解锁,例如智能手机的面部解锁功能。人脸认证是指通过人脸
2023-09-20

python使用opencv进行人脸识别

环境 ubuntu 12.04 LTS python 2.7.3 opencv 2.3.1-7 安装依赖sudo apt-get install libopencv-* sudo apt-get install python-opencv
2022-06-04

怎么用Python实现人脸识别

这篇文章主要讲解了“怎么用Python实现人脸识别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Python实现人脸识别”吧!1.安装最好是使用 Linux 或 Mac 环境来安装,W
2023-06-02

OpenCV实现人脸识别

主要有以下步骤: 1、人脸检测 2、人脸预处理 3、从收集的人脸训练机器学习算法 4、人脸识别 5、收尾工作 人脸检测算法: 基于Haar的脸部检测器的基本思想是,对于面部正面大部分区域而言,会有眼睛所在区域应该比前额和脸颊更暗,嘴巴应该比
2022-06-04

python3+opencv3人脸识别入

import sysimport importlibimport cv2#注意python2中,直接调用reload(sys),但python3中要import importlibimportlib.reload(sys)# 待检测的图片路
2023-01-31

Python怎么构建人脸识别模型

这篇文章主要讲解了“Python怎么构建人脸识别模型”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python怎么构建人脸识别模型”吧!01 介绍你是否意识到,每当你上传照片到Faceboo
2023-06-16

Python如何实现人脸识别系统

小编给大家分享一下Python如何实现人脸识别系统,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!基本原理人脸识别和目标检测这些还不太一样,比如大家传统的训练一个目
2023-06-26

3行Python代码完成人脸识别

Face Recognition软件包这是世界上最简单的人脸识别库了。你可以通过Python引用或者命令行的形式使用它,来管理和识别人脸。该软件包使用dlib中最先进的人脸识别深度学习算法,使得识别准确率在《Labled Faces in
2023-01-31

人工智能人脸识别进社区

编程学习网:近年来,作为智慧社区建设中的重要组成部分,人脸识别门禁系统正在广泛进入城市社区,但在推行过程中也向人们提出了一个新问题:如何在提供便捷性的同时守住个人隐私安全?技术与伦理的边界在哪?
人工智能人脸识别进社区
2024-04-23

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录