本文將會(huì)把OpenCV-Python中人臉檢測(cè)算法模型推理時(shí)相關(guān)的參數(shù)全部界面化,實(shí)現(xiàn)用戶從界面選擇文件,完成人臉檢測(cè)操作。
這過程中主要借助了已經(jīng)介紹的這些組件元素。設(shè)計(jì)好的界面如下圖:
選擇一張圖像或者視頻文件之后,點(diǎn)擊【運(yùn)行】按鈕,執(zhí)行如下:
人臉檢測(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è)界面程序。
審核編輯:劉清
-
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)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論