本文將會把OpenCV-Python中人臉檢測算法模型推理時相關(guān)的參數(shù)全部界面化,實現(xiàn)用戶從界面選擇文件,完成人臉檢測操作。
這過程中主要借助了已經(jīng)介紹的這些組件元素。設(shè)計好的界面如下圖:
選擇一張圖像或者視頻文件之后,點擊【運行】按鈕,執(zhí)行如下:
人臉檢測界面程序
程序?qū)崿F(xiàn)從界面?zhèn)鲄⒌剿惴▓?zhí)行更新界面顯示的整個流程,其中人臉檢測相關(guān)OpenCV代碼實現(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("運行") 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的常見組件綜合運用與OpenCV人臉檢測算法與PyQT5界面庫的結(jié)合開發(fā),實現(xiàn)簡單的人臉檢測界面程序。
審核編輯:劉清
-
OpenCV
+關(guān)注
關(guān)注
31文章
635瀏覽量
41561 -
python
+關(guān)注
關(guān)注
56文章
4807瀏覽量
85040
原文標(biāo)題:PyQT5開發(fā)之構(gòu)建參數(shù)化的人臉檢測界面
文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
在全志H616核桃派開發(fā)板上部署PyQt5的信號與槽詳解
【Firefly RK3399試用體驗】第二篇:PyQt5大戰(zhàn)點燈
【Firefly RK3399試用體驗】PyQt5信號檢測系統(tǒng)(結(jié)項)
Dragonbaord 410c Python交互設(shè)計:利用pyQt搭建交互程序界面
利用PyQt5編輯軟件界面的簡單步驟
如何使用Python配合PyQT5模塊來開發(fā)圖形化應(yīng)用程序
魯班貓0 ubuntu20 解決python3.10安裝pyqt5
Python PyQt5工具在Windows平臺上的安裝方法
PyQt5的中文教程電子書免費下載
![<b class='flag-5'>PyQt5</b>的中文教程電子書免費下載](https://file.elecfans.com/web1/M00/C3/F2/pIYBAF8raGaAOyaVAATmpF7nQnE074.png)
PyQT5中的QPainter類支持與圖元支持實現(xiàn)圖形繪制
請問PyQT5是如何構(gòu)建YOLOv8界面應(yīng)用程序的
如何用PyQt5做圖形界面(一)
![如何用<b class='flag-5'>PyQt5</b>做圖形<b class='flag-5'>界面</b>(一)](https://file.elecfans.com/web2/M00/A3/6F/pYYBAGRUpIqADGVYAABC_WJM6mk815.png)
使用pycharm開發(fā)上位機配置pyqt5的環(huán)境
![使用pycharm開發(fā)上位機配置<b class='flag-5'>pyqt5</b>的環(huán)境](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
基于PyQT5與ONNXRUNTIME實現(xiàn)風(fēng)格遷移應(yīng)用
![基于<b class='flag-5'>PyQT5</b>與ONNXRUNTIME實現(xiàn)風(fēng)格遷移應(yīng)用](https://file1.elecfans.com/web2/M00/AA/34/wKgaomU4gLCAIUDjAAA2MvN-3cY703.png)
如何快速開發(fā)出功能強大、界面美觀的GUI 應(yīng)用程序
![如何快速開發(fā)出功能強大、<b class='flag-5'>界面</b>美觀的GUI 應(yīng)用程序](https://file1.elecfans.com/web2/M00/AC/16/wKgaomVDRUeALCeyAALfgsJhfUY986.jpg)
評論