微信公眾號:OpenCV開發者聯盟
關注獲取更多計算機視覺與深度學習知識
引言
文本輸入框QEditLine標簽QLabel按鈕QPushButton單選QRadioButton復選QCheckBox調節器QSpinBox下拉選擇QComboBox多行文本QTextBrowser水平布局QHBoxLayout垂直布局QVBoxLayout網格布局QGridLayout



人臉檢測界面程序
https://www.bilibili.com/video/BV1hM4y1M7vQ/ 1from?PyQt5?import?QtWidgets,?QtCore,?QtGui
2import?sys
3import?cv2?as?cv
4
5
6class?FaceDetectDemoPanel(QtWidgets.QWidget):
7????def?__init__(self,?parent=None):
8????????super().__init__(parent)
9????????#?文本標簽
10????????self.weight_file_path?=?QtWidgets.QLineEdit()
11????????self.weight_file_path.setMinimumWidth(150)
12????????self.weight_file_path.setEnabled(False)
13????????self.weight_file_path.setText("D:/projects/face_detector/opencv_face_detector_uint8.pb")
14????????self.config_file_path?=?QtWidgets.QLineEdit()
15????????self.config_file_path.setMinimumWidth(150)
16????????self.config_file_path.setEnabled(False)
17????????self.config_file_path.setText("D:/projects/face_detector/opencv_face_detector.pbtxt")
18????????self.weight_select_btn?=?QtWidgets.QPushButton("瀏覽...")
19????????self.config_file_btn?=?QtWidgets.QPushButton("瀏覽...")
20????????hbox_layout1?=?QtWidgets.QHBoxLayout()
21????????hbox_layout1.addWidget(QtWidgets.QLabel("權重:"))
22????????hbox_layout1.addWidget(self.weight_file_path)
23????????hbox_layout1.addWidget(self.weight_select_btn)
24????????hbox_layout1.addWidget(QtWidgets.QLabel("配置:"))
25????????hbox_layout1.addWidget(self.config_file_path)
26????????hbox_layout1.addWidget(self.config_file_btn)
27
28????????panel1?=?QtWidgets.QGroupBox("模型")
29????????panel1.setLayout(hbox_layout1)
30
31????????self.spinbox1?=?QtWidgets.QDoubleSpinBox()
32????????self.spinbox1.setRange(0.0,?1.0)
33????????self.spinbox1.setSingleStep(0.01)
34????????self.spinbox1.setValue(0.25)
35????????self.fps_chkbox?=?QtWidgets.QCheckBox("顯示FPS")
36????????self.score_chkbox?=?QtWidgets.QCheckBox("顯示置信")
37????????self.fps_chkbox.setChecked(True)
38????????self.score_chkbox.setChecked(True)
39
40????????hbox_layout2?=?QtWidgets.QHBoxLayout()
41????????hbox_layout2.addWidget(self.fps_chkbox)
42????????hbox_layout2.addWidget(self.score_chkbox)
43????????hbox_layout2.addWidget(QtWidgets.QLabel("置信閾值:"))
44????????hbox_layout2.addWidget(self.spinbox1)
45
46????????panel2?=?QtWidgets.QGroupBox("參數與顯示")
47????????panel2.setLayout(hbox_layout2)
48
49????????self.rbtn1?=?QtWidgets.QRadioButton("圖像")
50????????self.rbtn2?=?QtWidgets.QRadioButton("視頻")
51????????self.rbtn3?=?QtWidgets.QRadioButton("WebCam")
52????????self.rbtn1.setChecked(True)
53????????self.image_file_path?=?QtWidgets.QLineEdit()
54????????self.image_file_path.setEnabled(False)
55????????self.browser_btn?=?QtWidgets.QPushButton("選擇...")
56
57????????hbox_layout3?=?QtWidgets.QHBoxLayout()
58????????hbox_layout3.addWidget(self.rbtn1)
59????????hbox_layout3.addWidget(self.rbtn2)
60????????hbox_layout3.addWidget(self.rbtn3)
61????????hbox_layout3.addWidget(QtWidgets.QLabel("文件路徑:"))
62????????hbox_layout3.addWidget(self.image_file_path)
63????????hbox_layout3.addWidget(self.browser_btn)
64
65????????panel3?=?QtWidgets.QGroupBox("數據源")
66????????panel3.setLayout(hbox_layout3)
67
68????????panel4?=?QtWidgets.QWidget()
69????????vbox_layout4?=?QtWidgets.QVBoxLayout()
70????????vbox_layout4.addWidget(panel1)
71????????vbox_layout4.addWidget(panel2)
72????????vbox_layout4.addWidget(panel3)
73????????panel4.setLayout(vbox_layout4)
74
75????????#?輸入文本框
76????????self.label?=?QtWidgets.QLabel()
77????????pixmap?=?QtGui.QPixmap("images/16.jpg")
78????????pix?=?pixmap.scaled(QtCore.QSize(620,?500),?QtCore.Qt.KeepAspectRatio)
79????????self.label.setPixmap(pix)
80????????self.label.setAlignment(QtCore.Qt.AlignCenter)
81????????self.label.setStyleSheet("background-color:black;?color:?green")
82
83????????self.run_btn?=?QtWidgets.QPushButton("運行")
84????????self.run_btn.setMaximumWidth(100)
85
86????????#?添加到布局管理器中
87????????vbox_layout?=?QtWidgets.QVBoxLayout()
88????????vbox_layout.addWidget(panel4)
89????????vbox_layout.addWidget(self.run_btn)
90????????vbox_layout.addWidget(self.label)
91????????vbox_layout.addStretch(1)
92
93????????#?面板容器
94????????self.setLayout(vbox_layout)
95
96????????#?setup?listener
97????????self.weight_select_btn.clicked.connect(self.on_weight_select)
98????????self.config_file_btn.clicked.connect(self.on_config_select)
99????????self.browser_btn.clicked.connect(self.on_image_select)
100
101????????#?setup?listener
102????????self.rbtn1.toggled.connect(self.on_select_changed)
103????????self.rbtn2.toggled.connect(self.on_select_changed)
104????????self.rbtn3.toggled.connect(self.on_select_changed)
105
106????????self.run_btn.clicked.connect(self.on_face_detect)?總結
掃碼關注
OpenCV開發者聯盟,
專注各種語言的OpenCV開發教程分享
OpenCV周邊開發技術應用!

掃碼查看OpenCV+OpenVIO+Pytorch系統化學習路線圖

?推薦閱讀?
CV全棧開發者說 - 從傳統算法到深度學習怎么修煉
2022入坑深度學習,我選擇Pytorch框架!
Pytorch輕松實現經典視覺任務
教程推薦 | Pytorch框架CV開發-從入門到實戰
OpenCV4 C++學習 必備基礎語法知識三
OpenCV4 C++學習 必備基礎語法知識二
OpenCV4.5.4 人臉檢測+五點landmark新功能測試
OpenCV4.5.4人臉識別詳解與代碼演示
OpenCV二值圖象分析之Blob分析找圓
OpenCV4.5.x DNN + YOLOv5 C++推理
OpenCV4.5.4 直接支持YOLOv5 6.1版本模型推理
OpenVINO2021.4+YOLOX目標檢測模型部署測試
比YOLOv5還厲害的YOLOX來了,官方支持OpenVINO推理