利用HOG算法实现行人检测

时间: 2023-10-30 15:05:21 浏览: 38
HOG(Histogram of Oriented Gradients)算法是一种在计算机视觉领域中用于目标检测的特征提取算法。它基于图像中各个区域的梯度方向来描述图像的特征,被广泛应用于行人检测、车辆检测等领域。 行人检测基本流程: 1. 提取图像中的HOG特征。 2. 使用支持向量机(SVM)分类器对HOG特征进行分类。 3. 根据分类结果进行行人检测。 具体实现步骤如下: 1. 图像预处理:将图像缩放为固定大小,然后将图像分成若干个小单元(如16x16像素)。 2. 计算梯度:对每个小单元计算其灰度梯度的大小和方向,可以使用Sobel算子等方法。 3. 计算方向直方图:将每个小单元中的梯度方向分成若干个方向区间,统计每个区间内的梯度幅度,得到一个方向直方图。 4. 块归一化:将相邻的若干个小单元组成一个块(如2x2个小单元),对每个块内的方向直方图进行归一化,使其对光照、阴影等因素不敏感。 5. 构建HOG特征向量:将所有块内的方向直方图按顺序连接起来,得到一个HOG特征向量。 6. 训练SVM分类器:使用带标签的训练数据对SVM分类器进行训练。 7. 行人检测:对待检测图像中的每个小单元提取HOG特征向量,使用已训练好的SVM分类器对其进行分类,如果分类结果为行人,则将该小单元所在的位置标记为行人。 8. 非极大值抑制:对标记出的所有行人检测框进行非极大值抑制,去除重叠的检测框,保留最优的行人检测结果。 HOG算法的优点是对光照、阴影等因素不敏感,能够有效地提取图像中的局部特征,但其缺点是计算量较大,不适合实时应用。
相关问题

给定行人照片,利用HOG算法编程实现行人检测

可能的编程实现步骤如下: 1. 读取行人照片。 2. 对照片进行预处理,如缩放、灰度化等。 3. 定义HOG算法所需的参数,例如cell size, block size, nbins等。 4. 利用skimage库中的hog函数,提取行人照片的HOG特征。 5. 定义SVM分类模型,并将提取的HOG特征作为输入数据。 6. 对训练集进行训练,得到SVM模型。 7. 利用训练好的SVM模型,对测试集中的行人照片进行分类预测。 8. 根据预测结果,将检测到的行人框出来。 9. 展示检测结果。 代码实现示例: ```python import numpy as np import matplotlib.pyplot as plt from skimage.feature import hog from skimage import data, exposure from sklearn.svm import SVC from sklearn.model_selection import train_test_split from sklearn.metrics import classification_report import cv2 # 读取行人照片 img = cv2.imread('person.jpg') # 预处理 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) gray = cv2.resize(gray, (64, 128)) # 定义HOG算法所需的参数 orientations = 9 pixels_per_cell = (8, 8) cells_per_block = (2, 2) visualize = False normalize = True # 提取HOG特征 fd, hog_image = hog(gray, orientations=orientations, pixels_per_cell=pixels_per_cell, cells_per_block=cells_per_block, visualize=visualize, normalize=normalize) # 展示HOG特征图 fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(8, 4), sharex=True, sharey=True) ax1.axis('off') ax1.imshow(gray, cmap=plt.cm.gray) ax1.set_title('Input image') # Rescale histogram for better display hog_image_rescaled = exposure.rescale_intensity(hog_image, in_range=(0, 10)) ax2.axis('off') ax2.imshow(hog_image_rescaled, cmap=plt.cm.gray) ax2.set_title('Histogram of Oriented Gradients') plt.show() # 加载训练集和标签 X = np.load('X.npy') y = np.load('y.npy') # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) # 训练SVM模型 clf = SVC(kernel='linear', C=1) clf.fit(X_train, y_train) # 对测试集进行预测 y_pred = clf.predict(X_test) # 展示分类报告 print(classification_report(y_test, y_pred)) # 利用训练好的SVM模型,对行人照片进行分类预测 fd = fd.reshape(1, -1) y_pred = clf.predict(fd) # 根据预测结果,将检测到的行人框出来 if y_pred == 1: cv2.rectangle(img, (0, 0), (64, 128), (0, 255, 0), 2) # 展示检测结果 cv2.imshow('image', img) cv2.waitKey(0) cv2.destroyAllWindows() ```

给定行人照片,利用HOG算法编程实现行人检测

以下是Python代码实现: ```python import cv2 # 加载行人检测器 hog = cv2.HOGDescriptor() hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector()) # 加载测试图像 image = cv2.imread("pedestrians.jpg") # 行人检测 (rects, weights) = hog.detectMultiScale(image, winStride=(4, 4), padding=(8, 8), scale=1.05) # 绘制检测结果 for (x, y, w, h) in rects: cv2.rectangle(image, (x, y), (x + w, y + h), (0, 0, 255), 2) # 显示检测结果 cv2.imshow("Pedestrians", image) cv2.waitKey(0) ``` 首先,我们加载行人检测器并设置其SVM检测器。然后,我们加载测试图像并使用`detectMultiScale`方法进行行人检测。此方法返回检测到的矩形区域以及每个区域的置信度。最后,我们在原始图像上绘制检测结果并显示它。

相关推荐

最新推荐

recommend-type

HOG+SVM行人检测算法

在2005年CVPR上,来自法国的研究人员Navneet Dalal 和Bill Triggs提出利用Hog进行特征提取,利用线性SVM作为分类器,从而实现行人检测。而这两位也通过大量的测试发现,HOG +SVM是速度和效果综合平衡性能较好的一种...
recommend-type

基于Android Studio的个人记账应用帮助用户轻松管理和跟踪他们的财务源码.zip

基于Android Studio的个人记账应用帮助用户轻松管理和跟踪他们的财务源码.zip基于Android Studio的个人记账应用帮助用户轻松管理和跟踪他们的财务源码.zip基于Android Studio的个人记账应用帮助用户轻松管理和跟踪他们的财务源码.zip基于Android Studio的个人记账应用帮助用户轻松管理和跟踪他们的财务源码.zip基于Android Studio的个人记账应用帮助用户轻松管理和跟踪他们的财务源码.zip基于Android Studio的个人记账应用帮助用户轻松管理和跟踪他们的财务源码.zip基于Android Studio的个人记账应用帮助用户轻松管理和跟踪他们的财务源码.zip基于Android Studio的个人记账应用帮助用户轻松管理和跟踪他们的财务源码.zip基于Android Studio的个人记账应用帮助用户轻松管理和跟踪他们的财务源码.zip基于Android Studio的个人记账应用帮助用户轻松管理和跟踪他们的财务源码.zip
recommend-type

基于python实现树莓派和传感器的植物生长环境评估信息系统

【作品名称】:基于python实现树莓派和传感器的植物生长环境评估信息系统 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:基于python实现树莓派和传感器的植物生长环境评估信息系统
recommend-type

优质资源,Yearning Mysql SQL审核平台

Yearning Mysql SQL审核平台(使用go语言)
recommend-type

c语言课程设计-职工资源管理系统.rar

void displayMenu() { printf("\n+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n"); printf("+ 职工资源管理系统 +\n"); printf("+ +\n"); printf("+ 1. 录入职工信息 +\n"); printf("+ 2. 显示全部职工信息 +\n"); printf("+ 3. 根据工号查询
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

用 Python 画一个可以动的爱心

好的,我可以帮助您使用Python来绘制一个动态的爱心。您可以使用turtle库来实现。以下是实现代码: ```python import turtle import math # 设置画布和画笔 canvas = turtle.Screen() canvas.bgcolor("black") pencil = turtle.Turtle() pencil.speed(0) pencil.color("red", "pink") pencil.pensize(3) # 定义爱心函数 def draw_love(heart_size, x_offset=0, y_offset=0):
recommend-type

JSBSim Reference Manual

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