0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

介紹多種PyQT5的界面元素與它們的事件響應(yīng)

OpenCV學(xué)堂 ? 來源:OpenCV開發(fā)者聯(lián)盟 ? 2023-02-06 10:32 ? 次閱讀

本文將會(huì)把OpenCV-Python中人臉檢測(cè)算法模型推理時(shí)相關(guān)的參數(shù)全部界面化,實(shí)現(xiàn)用戶從界面選擇文件,完成人臉檢測(cè)操作。

這過程中主要借助了已經(jīng)介紹的這些組件元素。設(shè)計(jì)好的界面如下圖:

ce662998-a498-11ed-bfe3-dac502259ad0.png

選擇一張圖像或者視頻文件之后,點(diǎn)擊【運(yùn)行】按鈕,執(zhí)行如下:

ce80bcf4-a498-11ed-bfe3-dac502259ad0.png

ceb7f642-a498-11ed-bfe3-dac502259ad0.png

人臉檢測(cè)界面程序

程序?qū)崿F(xiàn)從界面?zhèn)鲄⒌剿惴▓?zhí)行更新界面顯示的整個(gè)流程,其中人臉檢測(cè)相關(guān)OpenCV代碼實(shí)現(xiàn)可以參考這里:

https://www.bilibili.com/video/BV1hM4y1M7vQ/
界面構(gòu)建的UI類代碼如下:
  1fromPyQt5importQtWidgets,QtCore,QtGui
  2importsys
  3importcv2ascv
  4
  5
  6classFaceDetectDemoPanel(QtWidgets.QWidget):
  7def__init__(self,parent=None):
  8super().__init__(parent)
  9#文本標(biāo)簽
 10self.weight_file_path=QtWidgets.QLineEdit()
 11self.weight_file_path.setMinimumWidth(150)
 12self.weight_file_path.setEnabled(False)
 13self.weight_file_path.setText("D:/projects/face_detector/opencv_face_detector_uint8.pb")
 14self.config_file_path=QtWidgets.QLineEdit()
 15self.config_file_path.setMinimumWidth(150)
 16self.config_file_path.setEnabled(False)
 17self.config_file_path.setText("D:/projects/face_detector/opencv_face_detector.pbtxt")
 18self.weight_select_btn=QtWidgets.QPushButton("瀏覽...")
 19self.config_file_btn=QtWidgets.QPushButton("瀏覽...")
 20hbox_layout1=QtWidgets.QHBoxLayout()
 21hbox_layout1.addWidget(QtWidgets.QLabel("權(quán)重:"))
 22hbox_layout1.addWidget(self.weight_file_path)
 23hbox_layout1.addWidget(self.weight_select_btn)
 24hbox_layout1.addWidget(QtWidgets.QLabel("配置:"))
 25hbox_layout1.addWidget(self.config_file_path)
 26hbox_layout1.addWidget(self.config_file_btn)
 27
 28panel1=QtWidgets.QGroupBox("模型")
 29panel1.setLayout(hbox_layout1)
 30
 31self.spinbox1=QtWidgets.QDoubleSpinBox()
 32self.spinbox1.setRange(0.0,1.0)
 33self.spinbox1.setSingleStep(0.01)
 34self.spinbox1.setValue(0.25)
 35self.fps_chkbox=QtWidgets.QCheckBox("顯示FPS")
 36self.score_chkbox=QtWidgets.QCheckBox("顯示置信")
 37self.fps_chkbox.setChecked(True)
 38self.score_chkbox.setChecked(True)
 39
 40hbox_layout2=QtWidgets.QHBoxLayout()
 41hbox_layout2.addWidget(self.fps_chkbox)
 42hbox_layout2.addWidget(self.score_chkbox)
 43hbox_layout2.addWidget(QtWidgets.QLabel("置信閾值:"))
 44hbox_layout2.addWidget(self.spinbox1)
 45
 46panel2=QtWidgets.QGroupBox("參數(shù)與顯示")
 47panel2.setLayout(hbox_layout2)
 48
 49self.rbtn1=QtWidgets.QRadioButton("圖像")
 50self.rbtn2=QtWidgets.QRadioButton("視頻")
 51self.rbtn3=QtWidgets.QRadioButton("WebCam")
 52self.rbtn1.setChecked(True)
 53self.image_file_path=QtWidgets.QLineEdit()
 54self.image_file_path.setEnabled(False)
 55self.browser_btn=QtWidgets.QPushButton("選擇...")
 56
 57hbox_layout3=QtWidgets.QHBoxLayout()
 58hbox_layout3.addWidget(self.rbtn1)
 59hbox_layout3.addWidget(self.rbtn2)
 60hbox_layout3.addWidget(self.rbtn3)
 61hbox_layout3.addWidget(QtWidgets.QLabel("文件路徑:"))
 62hbox_layout3.addWidget(self.image_file_path)
 63hbox_layout3.addWidget(self.browser_btn)
 64
 65panel3=QtWidgets.QGroupBox("數(shù)據(jù)源")
 66panel3.setLayout(hbox_layout3)
 67
 68panel4=QtWidgets.QWidget()
 69vbox_layout4=QtWidgets.QVBoxLayout()
 70vbox_layout4.addWidget(panel1)
 71vbox_layout4.addWidget(panel2)
 72vbox_layout4.addWidget(panel3)
 73panel4.setLayout(vbox_layout4)
 74
 75#輸入文本框
 76self.label=QtWidgets.QLabel()
 77pixmap=QtGui.QPixmap("images/16.jpg")
 78pix=pixmap.scaled(QtCore.QSize(620,500),QtCore.Qt.KeepAspectRatio)
 79self.label.setPixmap(pix)
 80self.label.setAlignment(QtCore.Qt.AlignCenter)
 81self.label.setStyleSheet("background-color:black;color:green")
 82
 83self.run_btn=QtWidgets.QPushButton("運(yùn)行")
 84self.run_btn.setMaximumWidth(100)
 85
 86#添加到布局管理器中
 87vbox_layout=QtWidgets.QVBoxLayout()
 88vbox_layout.addWidget(panel4)
 89vbox_layout.addWidget(self.run_btn)
 90vbox_layout.addWidget(self.label)
 91vbox_layout.addStretch(1)
 92
 93#面板容器
 94self.setLayout(vbox_layout)
 95
 96#setuplistener
 97self.weight_select_btn.clicked.connect(self.on_weight_select)
 98self.config_file_btn.clicked.connect(self.on_config_select)
 99self.browser_btn.clicked.connect(self.on_image_select)
100
101#setuplistener
102self.rbtn1.toggled.connect(self.on_select_changed)
103self.rbtn2.toggled.connect(self.on_select_changed)
104self.rbtn3.toggled.connect(self.on_select_changed)
105
106self.run_btn.clicked.connect(self.on_face_detect)

總結(jié)

本文主要是演示了PyQT5的常見組件綜合運(yùn)用與OpenCV人臉檢測(cè)算法與PyQT5界面庫(kù)的結(jié)合開發(fā),實(shí)現(xiàn)簡(jiǎn)單的人臉檢測(cè)界面程序。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • OpenCV
    +關(guān)注

    關(guān)注

    29

    文章

    625

    瀏覽量

    41218
  • python
    +關(guān)注

    關(guān)注

    55

    文章

    4774

    瀏覽量

    84386

原文標(biāo)題:PyQT5開發(fā)之構(gòu)建參數(shù)化的人臉檢測(cè)界面

文章出處:【微信號(hào):CVSCHOOL,微信公眾號(hào):OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    在全志H616核桃派開發(fā)板上部署PyQt5的信號(hào)與槽詳解

    什么是信號(hào)和槽 信號(hào)(signal)和槽(slot)是PyQt5對(duì)象之間通訊紐帶。一個(gè)完整的信號(hào)和槽流程有4個(gè)內(nèi)容: 發(fā)送者、信號(hào)、接收者、槽。 他們之間最簡(jiǎn)單的流程如下: 舉個(gè)例子:在前面第一個(gè)
    發(fā)表于 05-13 10:10

    【Firefly RK3399試用體驗(yàn)】第二篇:PyQt5大戰(zhàn)點(diǎn)燈

    ,使用命令apt install python3-pyqt5Ubuntu里也提供了一些IDE開發(fā)工具如IDLE、Spyder等等,此處不詳細(xì)介紹它們安裝過程。之后我們開始編寫Pyqt5
    發(fā)表于 06-12 07:49

    【Firefly RK3399試用體驗(yàn)】PyQt5信號(hào)檢測(cè)系統(tǒng)(結(jié)項(xiàng))

    介紹控制。PyQt顯示提供了通道選擇按鈕和FFT勾選框,其中0-10是采樣通道,11-13是3個(gè)TLC1543內(nèi)部的測(cè)試通道,14則是Python提供測(cè)試通道,如下圖所示。首先GUI界面一旦有選擇
    發(fā)表于 07-13 12:55

    Dragonbaord 410c Python交互設(shè)計(jì):利用pyQt搭建交互程序界面

    /51178104。安裝好后,我們可以找到pyqt5包的位置,如下:在pyqt5 目錄下大家可以看到用于pyqt開發(fā)的文檔、工具和例子,目錄下的內(nèi)容具體介紹如下: doc
    發(fā)表于 09-25 15:07

    利用PyQt5編輯軟件界面的簡(jiǎn)單步驟

    的操作以及利用PyQt5編輯軟件界面的簡(jiǎn)單步驟。實(shí)現(xiàn)難度不大,但需要運(yùn)行第二線程運(yùn)行輸出脈沖的程序。 首先,推薦一下PyQt5和Eric6的學(xué)習(xí)資料...
    發(fā)表于 09-16 07:48

    如何使用Python配合PyQT5模塊來開發(fā)圖形化應(yīng)用程序

    By Toradex秦海1).簡(jiǎn)介隨著Python在互聯(lián)網(wǎng)人工智能領(lǐng)域的流行,大家也慢慢感受到Python開發(fā)的便利,本文就基于嵌入式ARM平臺(tái),介紹使用Python配合PyQT5模塊來開發(fā)圖形化
    發(fā)表于 12-24 06:41

    魯班貓0 ubuntu20 解決python3.10安裝pyqt5

    前面用pip install pyqt5,總是安裝不成功。經(jīng)查閱資料,最后用:udo apt install python3-pyqt5成功安裝cat@lubancat:~$
    發(fā)表于 04-09 11:04

    Python PyQt5工具在Windows平臺(tái)上的安裝方法

    Python PyQt5工具安裝步驟:1. 安裝Python3.4.1,默認(rèn)安裝路徑:C:\Python34;2. 安裝PyQt5,會(huì)根據(jù)Python的安裝路徑自動(dòng)進(jìn)行安裝,不需要修改;3. 測(cè)試安裝是否成功。創(chuàng)建一個(gè)py文件,寫入以下代碼,運(yùn)行后彈出widget窗口就說
    發(fā)表于 02-13 10:45 ?2589次閱讀

    PyQt5的中文教程電子書免費(fèi)下載

     本教程的目的是帶領(lǐng)你入門PyQt5。教程內(nèi)所有代碼都在Linux上測(cè)試通過。PyQt4 教程是PyQt4的教程,PyQt4是一個(gè)Python(同時(shí)支持 2和3)版的Qt庫(kù)。
    發(fā)表于 08-06 08:00 ?13次下載
    <b class='flag-5'>PyQt5</b>的中文教程電子書免費(fèi)下載

    PyQT5中的QPainter類支持與圖元支持實(shí)現(xiàn)圖形繪制

    圖形與圖像繪制支持是一個(gè)GUI框架庫(kù)的核心模塊之一,從Java的Graphics2D到Android的Canvas類支持到PyQT5中的QPainter類支持與圖元支持,都很好的滿足了GUI庫(kù)的圖形繪制與渲染需求。
    的頭像 發(fā)表于 02-10 11:10 ?1830次閱讀

    請(qǐng)問PyQT5是如何構(gòu)建YOLOv8界面應(yīng)用程序的

    PyQT5中引用OpenMV2023版本支持SDK,實(shí)現(xiàn)二次開發(fā)使用。OpenMV算法層已經(jīng)開放SDK調(diào)用支持,從圖像處理、分析、測(cè)量到深度學(xué)習(xí)推理全部支持SDK調(diào)用方式實(shí)現(xiàn)第三方應(yīng)用與程序集成。
    的頭像 發(fā)表于 02-14 17:07 ?1448次閱讀

    如何用PyQt5做圖形界面(一)

    PyQt是Python版本的Qt庫(kù),是最常用的跨平臺(tái)圖形界面編程框架之一。代碼不用修改,就能同時(shí)運(yùn)行在windows、linux、ios、andriod等平臺(tái)。因此,對(duì)芯片設(shè)計(jì)行業(yè)來說,既可以
    的頭像 發(fā)表于 05-05 14:41 ?1601次閱讀
    如何用<b class='flag-5'>PyQt5</b>做圖形<b class='flag-5'>界面</b>(一)

    使用pycharm開發(fā)上位機(jī)配置pyqt5的環(huán)境

    在上位機(jī)的開發(fā)過程中,使用QT的圖形化界面,是開發(fā)上位機(jī)最好最簡(jiǎn)單的選擇,因此我將講述配置pyqt5的環(huán)境。 軟件安裝: 安裝:pycharm的社區(qū)2021.02版 QT(安裝參考https
    發(fā)表于 05-29 16:12 ?0次下載
    使用pycharm開發(fā)上位機(jī)配置<b class='flag-5'>pyqt5</b>的環(huán)境

    基于PyQT5與ONNXRUNTIME實(shí)現(xiàn)風(fēng)格遷移應(yīng)用

    2023年一月份跟二月份創(chuàng)建了一個(gè)PyQT5人工智能軟件開發(fā)系列的文章系列,過去的兩個(gè)月都沒怎么更新,心里一直想有時(shí)間繼續(xù)更新下去,今天又更新了一篇,基于PyQT5實(shí)現(xiàn)多線程、界面化、風(fēng)格遷移模型的實(shí)時(shí)推理。
    的頭像 發(fā)表于 10-25 10:35 ?485次閱讀
    基于<b class='flag-5'>PyQT5</b>與ONNXRUNTIME實(shí)現(xiàn)風(fēng)格遷移應(yīng)用

    如何快速開發(fā)出功能強(qiáng)大、界面美觀的GUI 應(yīng)用程序

    1. 介紹 Python GUI 常用的 3 種框架是:Tkinter、wxpython、PyQt5 PyQt5 基于 Qt,是 Python 和 Qt 的結(jié)合體,可以用 Python 語言編寫跨
    的頭像 發(fā)表于 11-02 14:45 ?3067次閱讀
    如何快速開發(fā)出功能強(qiáng)大、<b class='flag-5'>界面</b>美觀的GUI 應(yīng)用程序