本文將會把OpenCV-Python中人臉檢測算法模型推理時相關的參數全部界面化,實現用戶從界面選擇文件,完成人臉檢測操作。
這過程中主要借助了已經介紹的這些組件元素。設計好的界面如下圖:
選擇一張圖像或者視頻文件之后,點擊【運行】按鈕,執行如下:
人臉檢測界面程序
程序實現從界面傳參到算法執行更新界面顯示的整個流程,其中人臉檢測相關OpenCV代碼實現可以參考這里:
https://www.bilibili.com/video/BV1hM4y1M7vQ/界面構建的UI類代碼如下:
1fromPyQt5importQtWidgets,QtCore,QtGui 2importsys 3importcv2ascv 4 5 6classFaceDetectDemoPanel(QtWidgets.QWidget): 7def__init__(self,parent=None): 8super().__init__(parent) 9#文本標簽 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("權重:")) 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("參數與顯示") 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("數據源") 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("運行") 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)
總結
本文主要是演示了PyQT5的常見組件綜合運用與OpenCV人臉檢測算法與PyQT5界面庫的結合開發,實現簡單的人臉檢測界面程序。
審核編輯:劉清
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
OpenCV
+關注
關注
31文章
635瀏覽量
41365 -
python
+關注
關注
56文章
4797瀏覽量
84721
原文標題:PyQT5開發之構建參數化的人臉檢測界面
文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學堂】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
在全志H616核桃派開發板上部署PyQt5的信號與槽詳解
什么是信號和槽
信號(signal)和槽(slot)是PyQt5對象之間通訊紐帶。一個完整的信號和槽流程有4個內容: 發送者、信號、接收者、槽。 他們之間最簡單的流程如下:
舉個例子:在前面第一個
發表于 05-13 10:10
【Firefly RK3399試用體驗】第二篇:PyQt5大戰點燈
,使用命令apt install python3-pyqt5Ubuntu里也提供了一些IDE開發工具如IDLE、Spyder等等,此處不詳細介紹它們安裝過程。之后我們開始編寫Pyqt5
發表于 06-12 07:49
【Firefly RK3399試用體驗】PyQt5信號檢測系統(結項)
將介紹控制。PyQt顯示提供了通道選擇按鈕和FFT勾選框,其中0-10是采樣通道,11-13是3個TLC1543內部的測試通道,14則是Python提供測試通道,如下圖所示。首先GUI界面一旦有選擇
發表于 07-13 12:55
Dragonbaord 410c Python交互設計:利用pyQt搭建交互程序界面
/51178104。安裝好后,我們可以找到pyqt5包的位置,如下:在pyqt5 目錄下大家可以看到用于pyqt開發的文檔、工具和例子,目錄下的內容具體介紹如下: doc
發表于 09-25 15:07
利用PyQt5編輯軟件界面的簡單步驟
的操作以及利用PyQt5編輯軟件界面的簡單步驟。實現難度不大,但需要運行第二線程運行輸出脈沖的程序。 首先,推薦一下PyQt5和Eric6的學習資料...
發表于 09-16 07:48
如何使用Python配合PyQT5模塊來開發圖形化應用程序
By Toradex秦海1).簡介隨著Python在互聯網人工智能領域的流行,大家也慢慢感受到Python開發的便利,本文就基于嵌入式ARM平臺,介紹使用Python配合PyQT5模塊來開發圖形化
發表于 12-24 06:41
魯班貓0 ubuntu20 解決python3.10安裝pyqt5
前面用pip install pyqt5,總是安裝不成功。經查閱資料,最后用:udo apt install python3-pyqt5成功安裝cat@lubancat:~$
發表于 04-09 11:04
Python PyQt5工具在Windows平臺上的安裝方法
Python PyQt5工具安裝步驟:1. 安裝Python3.4.1,默認安裝路徑:C:\Python34;2. 安裝PyQt5,會根據Python的安裝路徑自動進行安裝,不需要修改;3. 測試安裝是否成功。創建一個py文件,寫入以下代碼,運行后彈出widget窗口就說
發表于 02-13 10:45
?2604次閱讀
PyQt5的中文教程電子書免費下載
本教程的目的是帶領你入門PyQt5。教程內所有代碼都在Linux上測試通過。PyQt4 教程是PyQt4的教程,PyQt4是一個Python(同時支持 2和3)版的Qt庫。
發表于 08-06 08:00
?18次下載
PyQT5中的QPainter類支持與圖元支持實現圖形繪制
圖形與圖像繪制支持是一個GUI框架庫的核心模塊之一,從Java的Graphics2D到Android的Canvas類支持到PyQT5中的QPainter類支持與圖元支持,都很好的滿足了GUI庫的圖形繪制與渲染需求。
請問PyQT5是如何構建YOLOv8界面應用程序的
在PyQT5中引用OpenMV2023版本支持SDK,實現二次開發使用。OpenMV算法層已經開放SDK調用支持,從圖像處理、分析、測量到深度學習推理全部支持SDK調用方式實現第三方應用與程序集成。
如何用PyQt5做圖形界面(一)
PyQt是Python版本的Qt庫,是最常用的跨平臺圖形界面編程框架之一。代碼不用修改,就能同時運行在windows、linux、ios、andriod等平臺。因此,對芯片設計行業來說,既可以
使用pycharm開發上位機配置pyqt5的環境
在上位機的開發過程中,使用QT的圖形化界面,是開發上位機最好最簡單的選擇,因此我將講述配置pyqt5的環境。
軟件安裝: 安裝:pycharm的社區2021.02版 QT(安裝參考https
發表于 05-29 16:12
?0次下載
基于PyQT5與ONNXRUNTIME實現風格遷移應用
2023年一月份跟二月份創建了一個PyQT5人工智能軟件開發系列的文章系列,過去的兩個月都沒怎么更新,心里一直想有時間繼續更新下去,今天又更新了一篇,基于PyQT5實現多線程、界面化、風格遷移模型的實時推理。
如何快速開發出功能強大、界面美觀的GUI 應用程序
1. 介紹 Python GUI 常用的 3 種框架是:Tkinter、wxpython、PyQt5 PyQt5 基于 Qt,是 Python 和 Qt 的結合體,可以用 Python 語言編寫跨
評論