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

競賽保研 機器視覺 opencv 深度學習 駕駛人臉疲勞檢測系統(tǒng) -python

這篇具有很好參考價值的文章主要介紹了競賽保研 機器視覺 opencv 深度學習 駕駛人臉疲勞檢測系統(tǒng) -python。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

0 前言

?? 優(yōu)質競賽項目系列,今天要分享的是

?? 機器視覺 opencv 深度學習 駕駛人臉疲勞檢測系統(tǒng)

該項目較為新穎,適合作為競賽課題方向,學長非常推薦!

??學長這里給一個題目綜合評分(每項滿分5分)

  • 難度系數(shù):3分
  • 工作量:3分
  • 創(chuàng)新點:4分

?? 更多資料, 項目分享:

https://gitee.com/dancheng-senior/postgraduate文章來源地址http://www.zghlxwxcb.cn/news/detail-809972.html

1 課題背景

為了有效監(jiān)測駕駛員是否疲勞駕駛、避免交通事故的發(fā)?,本項目利??臉特征點進?實時疲勞駕駛檢測的新?法。對駕駛員駕駛時的?部圖像進?實時監(jiān)控,?先檢測?臉,并利?ERT算法定位?臉特征點;然后根據(jù)?臉眼睛區(qū)域的特征點坐標信息計算眼睛縱橫?EAR來描述眼睛張開程度,根據(jù)合適的EAR閾值可判斷睜眼或閉眼狀態(tài);最后基于EAR實測值和EAR閾值對監(jiān)控視頻計算閉眼時間?例(PERCLOS)值度量駕駛員主觀疲勞程度,將其與設定的疲勞度閾值進??較即可判定是否疲勞駕駛。

2 Dlib人臉識別

2.1 簡介

Dlib是一個基于c++開發(fā)的開源數(shù)據(jù)工具庫,其中包含了不少的機器學習的成熟算法與模型,相對于tensorflow和PyTorch,它用于圖像處理以及人臉面部特征提取、分類及對比這幾個方面比較具有通用性和優(yōu)越性,因此,Dlib正在越來越廣泛地應用在人臉識別技術領域。
Dlib具有獨立使用的可移植代碼。Dlib中的代碼使用c++語言進行開發(fā)而成,使用獨立封裝,在不借助第三方數(shù)據(jù)庫的情況下,可以直接移植到自己所需要設計的項目中進行使用。

2.2 Dlib優(yōu)點

  • Dlib擁有全面的文檔說明。作為一個開源的人臉數(shù)據(jù)庫訓練集,Dlib中有很多功能齊全的程序和文件,從人性化的角度而言的,Dlib在這一點上做的是非常不錯的,因為它為每一個程序文檔和文件都做了相對應的注釋,這樣開發(fā)者就可以迅速準確的調集程序文檔來完成自己所需要的項目功能。

  • Dlib涵蓋了支持功能完備的深度學習以及圖像處理的各類算法。Dlib為開發(fā)者提供了機器深度學習的各類成熟的完備算法,并且在圖像處理方面也為開發(fā)者帶來了能夠解決大多數(shù)實質問題的優(yōu)良算法。例如基于SVM的遞歸和分類算法,以及專門用于面對大規(guī)模分類和遞歸的降維算法。當然還有能夠對未知函數(shù)進行預分類和預測的相關向量機,其分類和預測訓練是基于貝葉斯框架。

2.3 相關代碼

?
import matplotlib.pyplot as plt
import dlib
import numpy as np
import glob
import re

#正臉檢測器
detector``=``dlib.get_frontal_face_detector()
#臉部關鍵形態(tài)檢測器
sp``=``dlib.shape_predictor(r``"D:LBJAVAscriptshape_predictor_68_face_landmarks.dat"``)
#人臉識別模型
facerec ``=` `dlib.face_recognition_model_v1(r``"D:LBJAVAscriptdlib_face_recognition_resnet_model_v1.dat"``)
 
#候選人臉部描述向量集
descriptors``=``[]
 
photo_locations``=``[]
 
for` `photo ``in` `glob.glob(r``'D:LBJAVAscriptfaces*.jpg'``):
 ``photo_locations.append(photo)
 ``img``=``plt.imread(photo)
 ``img``=``np.array(img)
 
 ``#開始檢測人臉
 ``dets``=``detector(img,``1``)
 
 ``for` `k,d ``in` `enumerate``(dets):
  ``#檢測每張照片中人臉的特征
  ``shape``=``sp(img,d)
  ``face_descriptor``=``facerec.compute_face_descriptor(img,shape)
  ``v``=``np.array(face_descriptor)
  ``descriptors.append(v)
    
#輸入的待識別的人臉處理方法相同
img``=``plt.imread(r``'D:test_photo10.jpg'``)
img``=``np.array(img)
dets``=``detector(img,``1``)
#計算輸入人臉和已有人臉之間的差異程度(比如用歐式距離來衡量)
differences``=``[]
for` `k,d ``in` `enumerate``(dets):
 ``shape``=``sp(img,d)
 ``face_descriptor``=``facerec.compute_face_descriptor(img,shape)
 ``d_test``=``np.array(face_descriptor)
 
 ``#計算輸入人臉和所有已有人臉描述向量的歐氏距離
 ``for` `i ``in` `descriptors:
  ``distance``=``np.linalg.norm(i``-``d_test)
  ``differences.append(distance)
 
#按歐式距離排序 歐式距離最小的就是匹配的人臉
candidate_count``=``len``(photo_locations)
candidates_dict``=``dict``(``zip``(photo_locations,differences))
candidates_dict_sorted``=``sorted``(candidates_dict.items(),key``=``lambda` `x:x[``1``])
 
#matplotlib要正確顯示中文需要設置
plt.rcParams[``'font.family'``] ``=` `[``'sans-serif'``]
plt.rcParams[``'font.sans-serif'``] ``=` `[``'SimHei'``]
 
plt.rcParams[``'figure.figsize'``] ``=` `(``20.0``, ``70.0``)
 
ax``=``plt.subplot(candidate_count``+``1``,``4``,``1``)
ax.set_title(``"輸入的人臉"``)
ax.imshow(img)
 
for` `i,(photo,distance) ``in` `enumerate``(candidates_dict_sorted):
 ``img``=``plt.imread(photo)
 
 ``face_name``=``""
 ``photo_name``=``re.search(r``'([^\]*).jpg$'``,photo)
 ``if` `photo_name:
  ``face_name``=``photo_name[``1``]
  
 ``ax``=``plt.subplot(candidate_count``+``1``,``4``,i``+``2``)
 ``ax.set_xticks([])
 ``ax.set_yticks([])
 ``ax.spines[``'top'``].set_visible(``False``)
 ``ax.spines[``'right'``].set_visible(``False``)
 ``ax.spines[``'bottom'``].set_visible(``False``)
 ``ax.spines[``'left'``].set_visible(``False``)
 
 ``if` `i``=``=``0``:
  ``ax.set_title(``"最匹配的人臉nn"``+``face_name``+``"nn差異度:"``+``str``(distance))
 ``else``:
  ``ax.set_title(face_name``+``"nn差異度:"``+``str``(distance))
 ``ax.imshow(img)
 
plt.show()

2.4 人臉數(shù)據(jù)庫

本項目中將識別到的人臉保存的.db文件中,相關代碼如下:

?



    class CoreUI(QMainWindow):
        database = './FaceBase.db'
        trainingData = './recognizer/trainingData.yml'
        cap = cv2.VideoCapture()
        captureQueue = queue.Queue()  # 圖像隊列
        alarmQueue = queue.LifoQueue()  # 報警隊列,后進先出
        logQueue = multiprocessing.Queue()  # 日志隊列
        receiveLogSignal = pyqtSignal(str)  # LOG信號
    
        def __init__(self):
    
            super(CoreUI, self).__init__()


            loadUi('./ui/Core.ui', self)
            self.setWindowIcon(QIcon('./icons/icon.png'))
            #self.setFixedSize(1161, 620)

            '''self.pushButton = QPushButton('rush', self)
            layout = QVBoxLayout()
            layout.addWidget(self.pushButton)
            self.setLayout(layout)'''
            #self.pushButton.clicked.connect(self.open)=


            # 圖像捕獲
            self.isExternalCameraUsed = False
            self.useExternalCameraCheckBox.stateChanged.connect(
                lambda: self.useExternalCamera(self.useExternalCameraCheckBox))
            self.faceProcessingThread = FaceProcessingThread()
            self.startWebcamButton.clicked.connect(self.startWebcam)
    
            #A\B功能開關
    
            # 數(shù)據(jù)庫
            self.initDbButton.setIcon(QIcon('./icons/warning.png'))
            self.initDbButton.clicked.connect(self.initDb)
    
            self.timer = QTimer(self)  # 初始化一個定時器
            self.timer.timeout.connect(self.updateFrame)



?

2.5 人臉錄入加識別效果

錄入過程
競賽保研 機器視覺 opencv 深度學習 駕駛人臉疲勞檢測系統(tǒng) -python,python

識別效果
競賽保研 機器視覺 opencv 深度學習 駕駛人臉疲勞檢測系統(tǒng) -python,python

3 疲勞檢測算法

該系統(tǒng)采用Dlib庫中人臉68個關鍵點檢測shape_predictor_68_face_landmarks.dat的dat模型庫及視頻中的人臉,之后返回人臉特征點坐標、人臉框及人臉角度等。本系統(tǒng)利用這68個關鍵點對駕駛員的疲勞狀態(tài)進行檢測,算法如下:

  1. 初始化Dlib的人臉檢測器(HOG),然后創(chuàng)建面部標志物預測;
  2. 使用dlib.get_frontal_face_detector() 獲得臉部位置檢測器;
  3. 使用dlib.shape_predictor獲得臉部特征位置檢測器;
  4. 分別獲取左、右眼面部標志的索引;
  5. 打開cv2本地攝像頭。

Dlib庫68個特征點模型如圖所示:
競賽保研 機器視覺 opencv 深度學習 駕駛人臉疲勞檢測系統(tǒng) -python,python

3.1 眼睛檢測算法

基于EAR算法的眨眼檢測,當人眼睜開時,EAR在某個值域范圍內波動,當人眼閉合時,EAR迅速下降,理論上接近于0。當EAR低于某個閾值時,眼睛處于閉合狀態(tài);當EAR由某個值迅速下降至小于該閾值,再迅速上升至大于該閾值,則判斷為一次眨眼。為檢測眨眼次數(shù),需要設置同一次眨眼的連續(xù)幀數(shù)。眨眼速度較快,一般1~3幀即可完成眨眼動作。眼部特征點如圖:

競賽保研 機器視覺 opencv 深度學習 駕駛人臉疲勞檢測系統(tǒng) -python,python

EAR計算公式如下:
競賽保研 機器視覺 opencv 深度學習 駕駛人臉疲勞檢測系統(tǒng) -python,python
當后幀眼睛寬高比與前一幀差值的絕對值(EAR)大于0.2時,認為駕駛員在疲勞駕駛。(68點landmark中可以看到37-42為左眼,43-48為右眼)
競賽保研 機器視覺 opencv 深度學習 駕駛人臉疲勞檢測系統(tǒng) -python,python
右眼開合度可以通過以下公式:
競賽保研 機器視覺 opencv 深度學習 駕駛人臉疲勞檢測系統(tǒng) -python,python
眼睛睜開度從大到小為進入閉眼期,從小到大為進入睜眼期,計算最長閉眼時間(可用幀數(shù)來代替)。閉眼次數(shù)為進入閉眼、進入睜眼的次數(shù)。通過設定單位時間內閉眼次數(shù)、閉眼時間的閾值判斷人是否已經疲勞了。

相關代碼:

?
# 疲勞檢測,檢測眼睛和嘴巴的開合程度

from scipy.spatial import distance as dist
from imutils.video import FileVideoStream
from imutils.video import VideoStream
from imutils import face_utils
import numpy as np  # 數(shù)據(jù)處理的庫 numpy
import argparse
import imutils
import time
import dlib
import cv2
import math
import time
from threading import Thread

def eye_aspect_ratio(eye):
    # 垂直眼標志(X,Y)坐標
    A = dist.euclidean(eye[1], eye[5])  # 計算兩個集合之間的歐式距離
    B = dist.euclidean(eye[2], eye[4])
    # 計算水平之間的歐幾里得距離
    # 水平眼標志(X,Y)坐標
    C = dist.euclidean(eye[0], eye[3])
    # 眼睛長寬比的計算
    ear = (A + B) / (2.0 * C)
    # 返回眼睛的長寬比
    return ear

3.2 打哈欠檢測算法

基于MAR算法的哈欠檢測,利用Dlib提取嘴部的6個特征點,通過這6個特征點的坐標(51、59、53、57的縱坐標和49、55的橫坐標)來計算打哈欠時嘴巴的張開程度。當一個人說話時,點51、59、53、57的縱坐標差值增大,從而使MAR值迅速增大,反之,當一個人閉上嘴巴時,MAR值迅速減小。

嘴部主要取六個參考點,如下圖:
競賽保研 機器視覺 opencv 深度學習 駕駛人臉疲勞檢測系統(tǒng) -python,python
計算公式:
競賽保研 機器視覺 opencv 深度學習 駕駛人臉疲勞檢測系統(tǒng) -python,python
通過公式計算MAR來判斷是否張嘴及張嘴時間,從而確定駕駛員是否在打哈欠。閾值應經過大量實驗,能夠與正常說話或哼歌區(qū)分開來。為提高判斷的準確度,采用雙閾值法進行哈欠檢測,即對內輪廓進行檢測:結合張口度與張口時間進行判斷。Yawn為打哈欠的幀數(shù),N為1
min內總幀數(shù),設雙閾值法哈欠檢測的閾值為10%,當打哈欠頻率Freq>10%時,則認為駕駛員打了1個深度哈欠或者至少連續(xù)2個淺哈欠,此時系統(tǒng)進行疲勞提醒。

相關代碼:

?
# 疲勞檢測,檢測眼睛和嘴巴的開合程度

from scipy.spatial import distance as dist
from imutils.video import FileVideoStream
from imutils.video import VideoStream
from imutils import face_utils
import numpy as np  # 數(shù)據(jù)處理的庫 numpy
import argparse
import imutils
import time
import dlib
import cv2
import math
import time
from threading import Thread

def mouth_aspect_ratio(mouth):  # 嘴部
    A = np.linalg.norm(mouth[2] - mouth[10])  # 51, 59
    B = np.linalg.norm(mouth[4] - mouth[8])  # 53, 57
    C = np.linalg.norm(mouth[0] - mouth[6])  # 49, 55
    mar = (A + B) / (2.0 * C)
    return mar

?

相應的演示效果如下:

競賽保研 機器視覺 opencv 深度學習 駕駛人臉疲勞檢測系統(tǒng) -python,python

3.3 點頭檢測算法

基于HPE算法的點頭檢測

HPE(Head Pose
Estimation,HPE)算法步驟:2D人臉關鍵點檢測,3D人臉模型匹配,求解3D點和對應2D點的轉換關系,根據(jù)旋轉矩陣求解歐拉角。檢測過程中需要使用世界坐標系(UVW)、相機坐標系(XYZ)、圖像中心坐標系(uv)和像素坐標系(xy)。一個物體相對于相機的姿態(tài)可以使用旋轉矩陣和平移矩陣來表示。

  • 平移矩陣:物體相對于相機的空間位置關系矩陣,用T表示;
  • 旋轉矩陣:物體相對于相機的空間姿態(tài)關系矩陣,用R表示。

因此必然少不了坐標系轉換。如圖所示:
競賽保研 機器視覺 opencv 深度學習 駕駛人臉疲勞檢測系統(tǒng) -python,python
于是世界坐標系(UVW)、相機坐標系(XYZ)、圖像中心坐標系(uv)和像素坐標系(xy)四兄弟閃亮登場。相對關系如下:
世界坐標系轉換到相機坐標:
競賽保研 機器視覺 opencv 深度學習 駕駛人臉疲勞檢測系統(tǒng) -python,python
相機坐標系轉換到像素坐標系:
競賽保研 機器視覺 opencv 深度學習 駕駛人臉疲勞檢測系統(tǒng) -python,python
像素坐標系與世界坐標系的關系為:
競賽保研 機器視覺 opencv 深度學習 駕駛人臉疲勞檢測系統(tǒng) -python,python
圖像中心坐標系轉換到像素坐標系:
競賽保研 機器視覺 opencv 深度學習 駕駛人臉疲勞檢測系統(tǒng) -python,python
得到旋轉矩陣后,求歐拉角:
競賽保研 機器視覺 opencv 深度學習 駕駛人臉疲勞檢測系統(tǒng) -python,python
設定參數(shù)閾值為0.3,在一個時間段,如10
s內,當?shù)皖^歐拉角|Pitch|≥20°或者頭部傾斜歐拉角|Roll|≥20°的時間比例超過0.3時,則認為駕駛員處于瞌睡狀態(tài),發(fā)出預警。
競賽保研 機器視覺 opencv 深度學習 駕駛人臉疲勞檢測系統(tǒng) -python,python
相關效果展示:
競賽保研 機器視覺 opencv 深度學習 駕駛人臉疲勞檢測系統(tǒng) -python,python

4 PyQt5

4.1 簡介

Qt是一個跨平臺的 C++ 開發(fā)庫,主要用來開發(fā)圖形用戶界面程序(GUI),當然也可以開發(fā)不帶界面的命令行程序。
但Qt 是純 C++ 開發(fā)的,PyQt5是基于圖形程序框架Qt5的Python語言實現(xiàn),由一組Python模塊構成。

  • QLabel控件:用來顯示文本或圖像。

  • QLineEdit窗口控件:提供了一個單頁面的單行文本編輯器。

  • QTextEdit窗口控件:提供了一個單頁面的多行文本編輯器。

  • QPushButton窗口控件:提供了一個命令按鈕。

  • QRadioButton控件:提供了一個單選鈕和一個文本或像素映射標簽。

  • QCheckBox窗口控件:提供了一個帶文本標簽的復選框。

  • QspinBox控件:允許用戶選擇一個值,要么通過按向上/向下鍵增加/減少當前顯示值,要么直接將值輸入到輸入框中。

  • QScrollBar窗口控件:提供了一個水平的或垂直的滾動條。

  • QSlider控件:提供了一個垂直的或水平的滑動條。

  • QComboBox控件:一個組合按鈕,用于彈出列表。

  • QMenuBar控件:提供了一個橫向菜單欄。

  • QStatusBar控件:提供了一個適合呈現(xiàn)狀態(tài)信息的水平條,通常放在QMainWindow的底部。

  • QToolBar控件:提供了一個工具欄,可以包含多個命令按鈕,通常放在QMainWindow的頂部。

  • QListView控件:可以顯示和控制可選的多選列表,可以設置ListMode或IconMode。

  • QPixmap控件:可以在繪圖設備上顯示圖像,通常放在QLabel或QPushButton類中。

  • Qdialog控件:對話框窗口的基類。

  • QWidget是所有用戶界面類的基類,它能接收所有的鼠標、鍵盤和其他系統(tǒng)窗口事件。沒有被嵌入到父窗口中的Widget會被當作一個窗口來調用,當然,它也可以使用setWindowFlags(Qt.WindowFlags)函數(shù)來設置窗口的顯示效果。QWidget的構造函數(shù)可以接收兩個參數(shù),其中第一個參數(shù)是該窗口的父窗口;第二個參數(shù)是該窗口的Flag,也就是- Qt.WindowFlags。根據(jù)父窗口來決定Widget是嵌入到父窗口中還是被當作一個獨立的窗口來調用,根據(jù)Flag來設置Widget窗口的一些屬性。

  • QMainWindow(主窗口)一般是應用程序的框架,在主窗口中可以添加所需要的Widget,比如添加菜單欄、工具欄、狀態(tài)欄等。主窗口通常用于提供一個大的中央窗口控件(如文本編輯或者繪制畫布)以及周圍的菜單欄、工具欄和狀態(tài)欄。QMainWindow常常被繼承,這使得封裝中央控件、菜單欄,工具欄以及窗口狀態(tài)變得更容易,也可以使用Qt Designer來創(chuàng)建主窗口。

4.2相關界面代碼

?

#部分代碼
from PyQt5.QtCore import QTimer, QThread, pyqtSignal, QRegExp, Qt
from PyQt5.QtGui import QImage, QPixmap, QIcon, QTextCursor, QRegExpValidator,QPainter
from PyQt5.QtWidgets import *
from PyQt5.uic import loadUi
from ui.untitled import Ui_Form
from core2 import CoreUI
from dataRecord import DataRecordUI
from dataManage import DataManageUI

from ui.pic import Ui_Form1
from PyQt5 import QtCore
import sys
import os
from PyQt5 import QtGui
from PyQt5 import QtCore
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
import sys
class Main(CoreUI,QMainWindow):
	def __init__(self):
		super(Main, self).__init__()
		qssStyle = open(os.path.join('sip/123.qss')).read()
		self.setStyleSheet(qssStyle)

		self.setWindowFlag(QtCore.Qt.FramelessWindowHint)#設置無邊框  但是按鍵得重新設置了
		#self.startWebcamButton()
		self.startWebcamButton.setStyleSheet(
			"startWebcamButton{color:black}"
			"startWebcamButton:hover{color:red}"
			"startWebcamButton{background-color:rgb(180,180,180)}"
			"startWebcamButton{border:2px}"
			"startWebcamButton{border-radius:10px}"
			"startWebcamButton{padding:2px 4px}"
			"startWebcamButton{font-size:14pt}")
		self.pushButton.setStyleSheet(
			"#pushButton {color:rgb(255,255,255);border-image:url(sip/anniu.png);text-aligh:left;font-size:18px;font-weight:bold;};"
		)
		self.pushButton_2.setStyleSheet(
			"#pushButton_2 {color:rgb(255,255,255);border-image:url(sip/anniu.png);text-aligh:left;font-size:18px;font-weight:bold;};"
		)
		self.pushButton_3.setStyleSheet(
			"#pushButton_3 {color:rgb(255,255,255);border-image:url(sip/anniu.png);text-aligh:left;font-size:18px;font-weight:bold;};"
		)
		self.pushButton_4.setStyleSheet(
			"#pushButton_4 {color:rgb(255,255,255);border-image:url(sip/anniu.png);text-aligh:left;font-size:18px;font-weight:bold;};"
		)
		#self.setStyleSheet("color:white")#顏色全變
		self.pushButton_4.clicked.connect(QCoreApplication.instance().quit)
	def closewin(self):
		self.close()

	def mouseMoveEvent(self, e: QMouseEvent):  # 重寫移動事件
		self._endPos = e.pos() - self._startPos
		self.move(self.pos() + self._endPos)

	def mousePressEvent(self, e: QMouseEvent):
		if e.button() == Qt.LeftButton:
			self._isTracking = True
			self._startPos = QPoint(e.x(), e.y())

	def mouseReleaseEvent(self, e: QMouseEvent):
		if e.button() == Qt.LeftButton:
			self._isTracking = False
			self._startPos = None
			self._endPos = None

	def paintEvent(self, a0: QtGui.QPaintEvent) -> None:
		painter = QPainter(self)
		pixmap = QPixmap("sip/5.jfif")
		painter.drawPixmap(self.rect(), pixmap)
		#self.setupUi(self)
	'''def open(self):
		path = r"sip/new"
		QDesktopServices.openUrl(QUrl.fromLocalFile(path))'''
class Child(DataRecordUI,QMainWindow):
	def __init__(self):
		super(Child, self).__init__()
		self.setWindowFlag(QtCore.Qt.FramelessWindowHint)
		qssStyle = open(os.path.join('sip/123.qss')).read()
		self.setStyleSheet(qssStyle)
		#self.setupUi(self)
	def OPEN(self):
			self.show()
	def closewin(self):
		self.close()
	def returnmain(self):

		self.pushButton.clicked.connect(main.show)
		self.pushButton.clicked.connect(ch.hide)
	def paintEvent(self, a0: QtGui.QPaintEvent) -> None:
		painter = QPainter(self)
		pixmap = QPixmap("sip/5.jfif")
		painter.drawPixmap(self.rect(), pixmap)

class Child1(DataManageUI,QMainWindow):
	def __init__(self):
		super(Child1,self).__init__()
		self.setWindowFlag(QtCore.Qt.FramelessWindowHint)
		qssStyle = open(os.path.join('sip/123.qss')).read()
		self.setStyleSheet(qssStyle)
	def OPEN(self):
		self.show()
	def closewin(self):
		self.close()
	def returnmain(self):

		self.pushButton.clicked.connect(main.show)
		self.pushButton.clicked.connect(ch1.hide)
	def paintEvent(self, a0: QtGui.QPaintEvent) -> None:
		painter = QPainter(self)
		pixmap = QPixmap("sip/5.jfif")
		painter.drawPixmap(self.rect(), pixmap)

class help(Ui_Form,QWidget):
	def __init__(self):
		super(help,self).__init__()
		self.setWindowFlag(QtCore.Qt.FramelessWindowHint)
		self.setupUi(self)
		qssStyle = open(os.path.join('sip/123.qss')).read()
		self.setStyleSheet(qssStyle)
		'''qssStyle1 = open(os.path.join('sip/123.qss')).read()
		self.setStyleSheet(qssStyle1)'''
	def OPEN(self):
		self.show()
	def returnmain(self):
		self.pushButton.clicked.connect(main.show)
		self.pushButton.clicked.connect(Help.hide)
	def paintEvent(self, a0: QtGui.QPaintEvent) -> None:
		painter = QPainter(self)
		pixmap = QPixmap("sip/5.jfif")
		painter.drawPixmap(self.rect(), pixmap)

class add(Ui_Form1,QWidget):
	def __init__(self):
		super(add,self).__init__()
		#self.setWindowFlag(QtCore.Qt.FramelessWindowHint)
		self.setupUi(self)
		self.setWindowFlag(QtCore.Qt.FramelessWindowHint)
		qssStyle = open(os.path.join('sip/123.qss')).read()
		self.setStyleSheet(qssStyle)
		#qssStyle = open(os.path.join('123.qss')).read()
		self.pushButton.clicked.connect(self.close)
		#self.setStyleSheet(qssStyle)
	def OPEN(self):
		self.show()
	def paintEvent(self, a0: QtGui.QPaintEvent) -> None:
		painter = QPainter(self)
		pixmap = QPixmap("./sip/5.jfif")
		painter.drawPixmap(self.rect(), pixmap)

if __name__ =="__main__":
	#QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
	app = QApplication(sys.argv)
	main = Main()
	ch = Child()
	ch1 = Child1()
	Help = help()
	ADD=add()
	main.show()
	#main.setStyleSheet("{border-image:url(sip/background.jpg)}")
	main.pushButton.clicked.connect(main.hide)
	main.pushButton.clicked.connect(ch.OPEN)
	main.pushButton_2.clicked.connect(main.hide)
	main.pushButton_2.clicked.connect(ch1.OPEN)
	main.pushButton_3.clicked.connect(main.hide)
	main.pushButton_3.clicked.connect(Help.OPEN)
	main.pushButton_11.clicked.connect(ADD.OPEN)
	ch.pushButton.clicked.connect(ch.returnmain)
	ch1.pushButton.clicked.connect(ch1.returnmain)
	Help.pushButton.clicked.connect(Help.returnmain)
	#ADD.pushButton.clicked.connect(ADD.close)
	sys.exit(app.exec_())

5 最后

?? 更多資料, 項目分享:

https://gitee.com/dancheng-senior/postgraduate

到了這里,關于競賽保研 機器視覺 opencv 深度學習 駕駛人臉疲勞檢測系統(tǒng) -python的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

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

領支付寶紅包贊助服務器費用

相關文章

  • 機器視覺畢業(yè)設計 深度學習駕駛人臉疲勞檢測系統(tǒng) - python opencv

    機器視覺畢業(yè)設計 深度學習駕駛人臉疲勞檢測系統(tǒng) - python opencv

    ?? 這兩年開始畢業(yè)設計和畢業(yè)答辯的要求和難度不斷提升,傳統(tǒng)的畢設題目缺少創(chuàng)新和亮點,往往達不到畢業(yè)答辯的要求,這兩年不斷有學弟學妹告訴學長自己做的項目系統(tǒng)達不到老師的要求。 為了大家能夠順利以及最少的精力通過畢設,學長分享優(yōu)質畢業(yè)設計項目,今天

    2024年02月07日
    瀏覽(247)
  • 大數(shù)據(jù)畢設分享 機器視覺 opencv 深度學習 駕駛人臉疲勞檢測系統(tǒng) -python

    大數(shù)據(jù)畢設分享 機器視覺 opencv 深度學習 駕駛人臉疲勞檢測系統(tǒng) -python

    ?? 這兩年開始畢業(yè)設計和畢業(yè)答辯的要求和難度不斷提升,傳統(tǒng)的畢設題目缺少創(chuàng)新和亮點,往往達不到畢業(yè)答辯的要求,這兩年不斷有學弟學妹告訴學長自己做的項目系統(tǒng)達不到老師的要求。 為了大家能夠順利以及最少的精力通過畢設,學長分享優(yōu)質畢業(yè)設計項目,今天

    2024年02月20日
    瀏覽(109)
  • 【大數(shù)據(jù)畢設選題】機器視覺 opencv 深度學習 駕駛人臉疲勞檢測系統(tǒng) -python

    【大數(shù)據(jù)畢設選題】機器視覺 opencv 深度學習 駕駛人臉疲勞檢測系統(tǒng) -python

    ?? 這兩年開始畢業(yè)設計和畢業(yè)答辯的要求和難度不斷提升,傳統(tǒng)的畢設題目缺少創(chuàng)新和亮點,往往達不到畢業(yè)答辯的要求,這兩年不斷有學弟學妹告訴學長自己做的項目系統(tǒng)達不到老師的要求。 為了大家能夠順利以及最少的精力通過畢設,學長分享優(yōu)質畢業(yè)設計項目,今天

    2024年02月20日
    瀏覽(87)
  • 【計算機畢設選題】機器視覺 opencv 深度學習 駕駛人臉疲勞檢測系統(tǒng) -python

    【計算機畢設選題】機器視覺 opencv 深度學習 駕駛人臉疲勞檢測系統(tǒng) -python

    ?? 這兩年開始畢業(yè)設計和畢業(yè)答辯的要求和難度不斷提升,傳統(tǒng)的畢設題目缺少創(chuàng)新和亮點,往往達不到畢業(yè)答辯的要求,這兩年不斷有學弟學妹告訴學長自己做的項目系統(tǒng)達不到老師的要求。 為了大家能夠順利以及最少的精力通過畢設,學長分享優(yōu)質畢業(yè)設計項目,今天

    2024年02月20日
    瀏覽(100)
  • 競賽保研 基于深度學習的人臉專注度檢測計算系統(tǒng) - opencv python cnn

    競賽保研 基于深度學習的人臉專注度檢測計算系統(tǒng) - opencv python cnn

    ?? 優(yōu)質競賽項目系列,今天要分享的是 ?? 基于深度學習的人臉專注度檢測計算算法 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ??學長這里給一個題目綜合評分(每項滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點:5分 ?? 更多資料, 項目分享: https://gitee.co

    2024年02月02日
    瀏覽(904)
  • 競賽保研 機器視覺opencv答題卡識別系統(tǒng)

    競賽保研 機器視覺opencv答題卡識別系統(tǒng)

    ?? 優(yōu)質競賽項目系列,今天要分享的是 ?? 答題卡識別系統(tǒng) - opencv python 圖像識別 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ??學長這里給一個題目綜合評分(每項滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點:3分 ?? 更多資料, 項目分享: https://gitee.com/da

    2024年01月21日
    瀏覽(30)
  • 競賽保研 機器視覺的試卷批改系統(tǒng) - opencv python 視覺識別

    競賽保研 機器視覺的試卷批改系統(tǒng) - opencv python 視覺識別

    ?? 優(yōu)質競賽項目系列,今天要分享的是 基于機器視覺的試卷系統(tǒng) - opencv python 視覺識別 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ?? 更多資料, 項目分享: https://gitee.com/dancheng-senior/postgraduate 機器視覺的發(fā)展對存在的作業(yè)批改問題, 提供了有效的解決方案

    2024年01月23日
    瀏覽(27)
  • 競賽 python 機器視覺 車牌識別 - opencv 深度學習 機器學習

    競賽 python 機器視覺 車牌識別 - opencv 深度學習 機器學習

    ?? 優(yōu)質競賽項目系列,今天要分享的是 ?? 基于python 機器視覺 的車牌識別系統(tǒng) ??學長這里給一個題目綜合評分(每項滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點:3分 ?? 更多資料, 項目分享: https://gitee.com/dancheng-senior/postgraduate 車牌識別其實是個經典的機器視覺任務了,

    2024年04月11日
    瀏覽(30)
  • 競賽保研 機器視覺人體跌倒檢測系統(tǒng) - opencv python

    競賽保研 機器視覺人體跌倒檢測系統(tǒng) - opencv python

    ?? 優(yōu)質競賽項目系列,今天要分享的是 ?? 機器視覺人體跌倒檢測系統(tǒng) 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ??學長這里給一個題目綜合評分(每項滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點:4分 ?? 更多資料, 項目分享: https://gitee.com/dancheng-senior/

    2024年01月21日
    瀏覽(30)
  • 競賽選題 機器視覺目標檢測 - opencv 深度學習

    競賽選題 機器視覺目標檢測 - opencv 深度學習

    ?? 優(yōu)質競賽項目系列,今天要分享的是 ?? 機器視覺 opencv 深度學習目標檢測 該項目較為新穎,適合作為競賽課題方向,學長非常推薦! ??學長這里給一個題目綜合評分(每項滿分5分) 難度系數(shù):3分 工作量:3分 創(chuàng)新點:4分 ?? 更多資料, 項目分享: https://gitee.com/dancheng

    2024年02月07日
    瀏覽(27)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包