国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python PyQt5 人臉識別軟件

這篇具有很好參考價值的文章主要介紹了Python PyQt5 人臉識別軟件。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Python PyQt5 人臉識別軟件,python,qt,開發(fā)語言

# !/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)  # 使用默認(rèn)攝像頭
            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文章來源地址http://www.zghlxwxcb.cn/news/detail-631247.html

到了這里,關(guān)于Python PyQt5 人臉識別軟件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 人臉識別系統(tǒng)OpenCV+dlib+python(含數(shù)據(jù)庫)Pyqt5界面設(shè)計 項目源碼 畢業(yè)設(shè)計

    人臉識別系統(tǒng)OpenCV+dlib+python(含數(shù)據(jù)庫)Pyqt5界面設(shè)計 項目源碼 畢業(yè)設(shè)計

    Python語言、dlib、OpenCV、Pyqt5界面設(shè)計、sqlite3數(shù)據(jù)庫 ? ? ?本系統(tǒng)使用dlib作為人臉識別工具,dlib提供一個方法可將人臉圖片數(shù)據(jù)映射到128維度的空間向量,如果兩張圖片來源于同一個人,那么兩個圖片所映射的空間向量距離就很近,否則就會很遠。因此,可以通過提取圖片并

    2024年02月05日
    瀏覽(20)
  • python、pyqt5實現(xiàn)人臉檢測、性別和年齡預(yù)測

    python、pyqt5實現(xiàn)人臉檢測、性別和年齡預(yù)測

    摘要:這篇博文介紹基于opencv:DNN模塊自帶的殘差網(wǎng)絡(luò)的人臉、性別、年齡識別系統(tǒng),系統(tǒng)程序由OpenCv, PyQt5的庫實現(xiàn)。如圖系統(tǒng)可通過攝像頭獲取實時畫面并識別其中的人臉表情,也可以通過讀取圖片識別,本文提供完整的程序文件并詳細(xì)介紹其實現(xiàn)過程。博文要點如下:

    2024年02月07日
    瀏覽(33)
  • 基于opencv和PyQt5的人臉識別

    基于opencv和PyQt5的人臉識別

    目? ? 錄 一、準(zhǔn)備工作 二、分割任務(wù) 三、代碼實現(xiàn)階段 1、基于opencv讀取照片 2、在圖片上繪制矩形 3、在讀取照片成功的前提下理解視頻的本質(zhì),讀取視頻 4、在視頻上繪制矩形 5、調(diào)用人臉識別模塊 ?6、動態(tài)調(diào)整矩形,讓矩形通過人臉識別算法追蹤人臉 7、調(diào)用Qt組件,創(chuàng)

    2024年02月03日
    瀏覽(17)
  • 打架識別(AI+Python+PyQt5)(一)

    打架識別(AI+Python+PyQt5)(一)

    ????????最近做了一個打架識別的項目,有感于當(dāng)時開發(fā)資料的匱乏,特做一個小結(jié),供大家參考。閑話少敘,看看效果先。? ? ? ? ? ? ? ? ? ? ? ????????目前打架檢測,主要有3種主流的方法,分別是: (1)基于Detection的打架檢測。其主要思想是: 將打架作為一種

    2023年04月08日
    瀏覽(16)
  • 基于PyQt5GUI的人臉識別系統(tǒng)設(shè)計與實現(xiàn)

    基于PyQt5GUI的人臉識別系統(tǒng)設(shè)計與實現(xiàn)

    目 錄 前 言 1 第 1 章 人臉識別系統(tǒng)概述 1 第 2 章 人臉檢測技術(shù) 1 §2.1 基于 Harr 級聯(lián)的人臉檢測 2 §2.2 基于 face_recognition 開源庫的人臉檢測… 錯誤!未定義書簽。第 3 章 人臉識別技術(shù) 5 §3.1 構(gòu)造人臉數(shù)據(jù)集 5 §3.2 模型訓(xùn)練 7 §3.3 實時人臉識別 9 第 4 章 基于 PyQt5 的應(yīng)用平臺 1

    2024年02月04日
    瀏覽(27)
  • mac python3.9安裝pyqt5、qt5、pyqt5-tools

    mac python3.9安裝pyqt5、qt5、pyqt5-tools

    pyqt6安裝參考 PyQT6:看這一篇就夠了 python PyQt6 常用操作以及常見問題解決 pycharm配置tools 參考鏈接 以下pip命令自行更具自己環(huán)境選擇pip或pip3 在安裝pyqt前必須先安裝sip包 完成sip的安裝后,安裝pyqt和pyqt-tools, 可以直接使用命令: 若是使用pip3安裝報錯 AttributeError: module ‘sipb

    2024年02月14日
    瀏覽(55)
  • Python - PyQT5開發(fā)UI界面 - 環(huán)境搭建

    Python - PyQT5開發(fā)UI界面 - 環(huán)境搭建

    沒有做過UI界面的都會把UI的制作想象的很神秘,我在剛開始的時候也是感覺異常神秘、很復(fù)雜、并且無從下手,不過在真正的做出來一個界面后,發(fā)現(xiàn)也并沒有想象中的那么難,而且做出來可視化的東西所帶來的成就感是超越代碼本身的;不過整個過程也并不順利,網(wǎng)上都是

    2023年04月23日
    瀏覽(27)
  • python中的yolov5結(jié)合PyQt5,使用QT designer設(shè)計界面沒正確啟動的解決方法

    python中的yolov5結(jié)合PyQt5,使用QT designer設(shè)計界面沒正確啟動的解決方法

    一、窗體設(shè)計test: 默認(rèn)你已經(jīng)設(shè)計好了窗體后: 這時你需要的是保存生成的untitle.ui到某個文件夾下,然后在命令行中獎.ui轉(zhuǎn)換為.py(,通過??pyqt5???提供的轉(zhuǎn)換工具,將??ui???文件轉(zhuǎn)換成??python??的代碼) 或者使用在PyCharm中安裝的工具: 然后你會看到mai

    2024年02月07日
    瀏覽(32)
  • 【深度學(xué)習(xí)】基于Qt的人臉識別系統(tǒng),門禁人臉識別系統(tǒng),Python人臉識別流程,樹莓派

    【深度學(xué)習(xí)】基于Qt的人臉識別系統(tǒng),門禁人臉識別系統(tǒng),Python人臉識別流程,樹莓派

    在深度學(xué)習(xí)領(lǐng)域做人臉識別的識別準(zhǔn)確率已經(jīng)高到超出人類識別,但綜合考慮模型復(fù)雜度(推理速度)和模型的識別效果,這個地方還是有做一些工作的需求的。 人臉識別的過程基本由下面的流程組成。 yolov5-face、yolov7-face等github項目都可以做到這一點,在公開數(shù)據(jù)集上訓(xùn)練

    2024年02月09日
    瀏覽(25)
  • Python+Qt人臉識別門禁管理系統(tǒng)

    Python+Qt人臉識別門禁管理系統(tǒng)

    程序示例精選 Python+Qt人臉識別門禁管理系統(tǒng) 如需安裝運行環(huán)境或遠程調(diào)試,見文章底部個人 QQ 名片,由專業(yè)技術(shù)人員遠程協(xié)助! 這篇博客針對Python+Qt人臉識別門禁管理系統(tǒng)編寫代碼,代碼整潔,規(guī)則,易讀。 學(xué)習(xí)與應(yīng)用推薦首選。 一、所需工具軟件 二、使用步驟 ????

    2023年04月25日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包