news 2026/4/17 1:58:03

OpenCVSharp:HOG行人检测

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OpenCVSharp:HOG行人检测

概述

HOG行人检测是一种基于方向梯度直方图特征的计算机视觉目标检测技术,它通过计算图像局部区域的梯度方向直方图来描述目标的外观形状特征。该算法首先将图像分割为小的连通区域(细胞单元),计算每个单元内像素的梯度方向并生成直方图,然后将相邻的细胞单元组合成块并对块内的直方图进行归一化处理,最终形成能够有效描述行人轮廓和形状的特征向量。这些特征向量被输入到预先训练好的SVM分类器中,判断图像区域是否包含行人,并通过多尺度扫描策略在不同大小的窗口中搜索目标,从而实现对图像中行人的准确检测和定位。

实践

/* by 01022.hk - online tools website : 01022.hk/zh/websocket.html */ // 读取图像 using var img = Cv2.ImRead(ImagePath, ImreadModes.Color); if (img.Empty()) { MessageBox.Show("无法读取图像文件", "错误", MessageBoxButton.OK, MessageBoxImage.Error); return; } // 创建HOG描述符 using var hog = new HOGDescriptor(); hog.SetSVMDetector(HOGDescriptor.GetDefaultPeopleDetector()); // 检查检测器大小 bool b = hog.CheckDetectorSize(); Console.WriteLine("CheckDetectorSize: {0}", b); // 运行人检测 // 使用默认参数运行检测器。要获得更高的命中率(以及更多的误报), // 降低hitThreshold和groupThreshold(将groupThreshold设置为0以完全关闭分组)。 OpenCvSharp.Rect[] found = hog.DetectMultiScale( img, HitThreshold, new Size(8, 8), new Size(24, 16), 1.05, GroupThreshold);

按照读取图像、创建HOG描述符、检测三个步骤来实现。

可以发现里面自带了一个行人检测器。

查看SetSVMDetector方法:

/* by 01022.hk - online tools website : 01022.hk/zh/websocket.html */ public virtual void SetSVMDetector(float[] svmDetector) { ThrowIfDisposed(); using var svmDetectorVec = new VectorOfFloat(svmDetector); NativeMethods.HandleException( NativeMethods.objdetect_HOGDescriptor_setSVMDetector(ptr, svmDetectorVec.CvPtr)); GC.KeepAlive(this); }

SetSVMDetector 是 HOGDescriptor 类中的一个关键方法,用于设置线性 SVM 分类器的系数,这些系数决定了 HOG 描述符如何识别特定对象。

然后也是使用DetectMultiScale这个方法进行目标检测,查看它的函数签名:

public virtual Rect[] DetectMultiScale(Mat img, double hitThreshold = 0, Size? winStride = null, Size? padding = null, double scale=1.05, int groupThreshold = 2)

DetectMultiScale 是 HOGDescriptor 类中最核心的方法之一,用于在图像中执行多尺度目标检测,特别适用于检测不同大小的目标对象。

参数名类型默认值含义说明调优建议
imgMat必需输入图像,支持 CV_8UC1(灰度图)和 CV_8UC4(彩色图)格式确保图像格式正确,必要时进行转换
hitThresholddouble0特征与 SVM 分类平面之间的距离阈值。值越低检测越敏感,值越高检测越严格误报多时增加此值,漏检时降低此值
winStrideSize?null窗口滑动步长,必须是块步长的倍数。控制检测窗口在图像上移动的步长较大值(如8x8)提高速度,较小值(如4x4)提高精度
paddingSize?null填充参数,为了保持 CPU 接口兼容性。必须为 (0,0)通常保持默认值即可
scaledouble1.05检测窗口的缩放系数,控制多尺度检测时窗口大小的变化率检测小目标时用接近1的值(1.01-1.03),速度优先时用较大值(1.1-1.2)
groupThresholdint2相似度阈值系数,用于合并重叠的检测框。值为0表示不执行分组同一对象被多矩形检测到时增加此值,不同对象被错误合并时降低此值

效果:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 4:41:52

一键智能绑定:让3D角色动起来的简单方法

一键智能绑定:让3D角色动起来的简单方法 【免费下载链接】UniRig One Model to Rig Them All: Diverse Skeleton Rigging with UniRig 项目地址: https://gitcode.com/gh_mirrors/un/UniRig 你是否曾经面对复杂的3D模型,为骨骼绑定而头疼不已&…

作者头像 李华
网站建设 2026/4/13 7:31:23

Common Voice语音数据集实战指南:从入门到精通

Common Voice语音数据集实战指南:从入门到精通 【免费下载链接】cv-dataset Metadata and versioning details for the Common Voice dataset 项目地址: https://gitcode.com/gh_mirrors/cv/cv-dataset 前言:为什么选择Common Voice 如果你正在…

作者头像 李华
网站建设 2026/4/11 15:15:14

团队知识管理困局?这四款开源问答系统让你告别重复劳动

“这个环境怎么搭来着?”、“上次那个活动的配置还记得吗?”、“这个接口报错之前有人遇到过吗?”——如果你也经常被这样的问题轰炸,说明你的团队正面临知识管理的困境。今天我要介绍的这四款开源问答系统,能帮你把零…

作者头像 李华
网站建设 2026/4/9 13:32:26

智能家居安全报警系统的设计(论文+源码)

通过需求分析,本设计智能家居安全报警系统利用单片机控制技术、传感器检测技术、展开设计,如图2.1所示为本次系统设计的主体框图,系统包括单片机主控模块、火焰检测模块、有毒气体检测模块、按键模块、人体检测模块、液晶显示模块、蜂鸣器报警…

作者头像 李华
网站建设 2026/4/13 9:52:10

百度网盘秒传工具完全操作手册:从入门到精通

百度网盘秒传工具完全操作手册:从入门到精通 【免费下载链接】rapid-upload-userscript-doc 秒传链接提取脚本 - 文档&教程 项目地址: https://gitcode.com/gh_mirrors/ra/rapid-upload-userscript-doc 你是否曾经为百度网盘文件转存速度慢而烦恼&#x…

作者头像 李华