图像行人检测GUI代码

时间: 2023-11-12 13:12:48 浏览: 33
以下是一个基于PyQt5和OpenCV的图像行人检测GUI代码示例: ```python import sys import cv2 from PyQt5.QtGui import QImage, QPixmap from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplication, QDialog, QFileDialog from ui_mainwindow import Ui_MainWindow class MainWindow(QDialog): def __init__(self): super().__init__() # 初始化UI self.ui = Ui_MainWindow() self.ui.setupUi(self) # 绑定事件 self.ui.pushButton.clicked.connect(self.open_image) self.ui.pushButton_2.clicked.connect(self.detect_people) self.image = None def open_image(self): # 打开图像 filename, _ = QFileDialog.getOpenFileName(self, "Open Image", "", "Image Files (*.png *.jpg *.bmp)") if filename: self.image = cv2.imread(filename) self.display_image(self.image) def detect_people(self): # 行人检测 if self.image is not None: hog = cv2.HOGDescriptor() hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector()) # 缩放图像以提高检测速度 scale = 1.05 min_neighbors = 3 flags = cv2.CASCADE_SCALE_IMAGE gray = cv2.cvtColor(self.image, cv2.COLOR_BGR2GRAY) rects, _ = hog.detectMultiScale(gray, scale, minNeighbors=min_neighbors,flags=flags) # 在图像上绘制检测框 for (x, y, w, h) in rects: cv2.rectangle(self.image, (x, y), (x+w, y+h), (0, 0, 255), 2) # 显示结果 self.display_image(self.image) def display_image(self, image): # 将OpenCV图像转换为QPixmap qimage = QImage(image.data, image.shape[1], image.shape[0], QImage.Format_RGB888) qpixmap = QPixmap.fromImage(qimage) # 显示图像 self.ui.label.setPixmap(qpixmap) self.ui.label.setAlignment(Qt.AlignCenter) if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) ``` 此代码使用了一个名为`ui_mainwindow.py`的UI文件。下面是该文件的内容: ```python from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(640, 480) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget) self.verticalLayout.setObjectName("verticalLayout") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setText("") self.label.setObjectName("label") self.verticalLayout.addWidget(self.label) self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.pushButton = QtWidgets.QPushButton(self.centralwidget) self.pushButton.setObjectName("pushButton") self.horizontalLayout.addWidget(self.pushButton) self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget) self.pushButton_2.setObjectName("pushButton_2") self.horizontalLayout.addWidget(self.pushButton_2) self.verticalLayout.addLayout(self.horizontalLayout) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 640, 26)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.pushButton.setText(_translate("MainWindow", "Open Image")) self.pushButton_2.setText(_translate("MainWindow", "Detect People")) ``` 请注意,此示例仅用于演示目的,实际应用中可能需要进行更多的错误处理和性能优化。

相关推荐

最新推荐

recommend-type

Python PyQt5模块实现窗口GUI界面代码实例

主要介绍了Python PyQt5模块实现窗口GUI界面代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
recommend-type

根据马尔科夫场图像去噪,matlab代码

根据马尔科夫场图像去噪,matlab代码,是模式识别与机器学习第八章8.3例子的代码。参考书籍PRML.博客http://www.cnblogs.com/Dzhouqi/p/3207601.html
recommend-type

论文研究-基于Matlab GUI平台的图像边缘检测 .pdf

基于Matlab GUI平台的图像边缘检测,林森,惠晓威,边缘检测是图像处理、模式识别、计算机视觉等领域十分重要的基础内容。MATLAB中的GUIDE是进行图形用户界面(GUI)程序设计的快速开发�
recommend-type

基于MATLAB GUI的数字图像处理

《基于MATLAB GUI的数字图像处理》开放实验项目报告 本文针对数字图像处理技术的特点及MATLAB语言的应用环境,利用MATLAB图像处理工具箱,根据需求进行程序的功能分析和界面设计,实现数字图像的灰度处理、亮度处理...
recommend-type

JAVA图形界面(GUI)之表格的示例代码

主要介绍了JAVA图形界面(GUI)之表格的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

list根据id查询pid 然后依次获取到所有的子节点数据

可以使用递归的方式来实现根据id查询pid并获取所有子节点数据。具体实现可以参考以下代码: ``` def get_children_nodes(nodes, parent_id): children = [] for node in nodes: if node['pid'] == parent_id: node['children'] = get_children_nodes(nodes, node['id']) children.append(node) return children # 测试数
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。