本文将会把opencv-python中人脸检测算法模型推理时相关的参数全部界面化,实现用户从界面选择文件,完成人脸检测操作。
这过程中主要借助了已经介绍的这些组件元素。设计好的界面如下图:
选择一张图像或者视频文件之后,点击【运行】按钮,执行如下:
人脸检测界面程序
程序实现从界面传参到算法执行更新界面显示的整个流程,其中人脸检测相关opencv代码实现可以参考这里:
https://www.bilibili.com/video/bv1hm4y1m7vq/界面构建的ui类代码如下: 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)100101 # setup listener102 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)105106 self.run_btn.clicked.connect(self.on_face_detect)
总结
本文主要是演示了pyqt5的常见组件综合运用与opencv人脸检测算法与pyqt5界面库的结合开发,实现简单的人脸检测界面程序。
台积电力挺华为 同时面临三大风险!
动力总成系统集成化推动电动汽车加速发展
LG Display在华建OLED面板厂获韩审批通过
折叠屏市场大热,柔性传感器产业化将至!
15E03SL芯片
介绍多种PyQT5的界面元素与它们的事件响应
Maxim推出三款模块化高度集成模拟IC
再突破!通威HJT组件功率达到755.03W,转换效率突破24.31%
运动用什么蓝牙耳机好?2021年运动蓝牙耳机排行榜
FDA最新发布关于医疗磁共振安全的指南草案
解读aigo国民好物PCIe4.0固态硬盘P7000的优势有哪些
超级电容器
德州仪器创新型1A电源转换器可将开关噪声锐降达99%
FPGA/CPLD设计小技巧
智能无人自助叉车定位技术,它的工作原理是什么
燧原科技自主研发第二代AI训练产品 解决AI芯片面临有效算力问题
创维计划重构电视产业生态圈 或将具有可行性
新一线城市购物中心发展趋势报告发布 购物中心都在变革什么
通用汽车成功展示了车辆转换为电动皮卡的可能性
苹果13上市苹果12降多少钱呢?