OpenCV使用HOGDescriptor实现行人检测

1、概述

  案例:使用HOGDescriptor实现行人检测

  实现步骤:

    1.载入图像

    2.图像灰度化

    3.实例化HOGDescriptor,并使用SVM检测器来检测行人

    4.使用detectMultScale在不同的尺度空间上实现行人检测

    5.将4中检测到的行人矩形框绘制出来,并输出最终结果

  在多尺度空间检测的API介绍:

detectMultiScale(InputArray img, CV_OUT std::vector<Rect>& foundLocations,
                                  double hitThreshold = 0, Size winStride = Size(),
                                  Size padding = Size(), double scale = 1.05,
                                  double finalThreshold = 2.0, bool useMeanshiftGrouping = false)
img:输入的灰度图像
foundLocations:检测结果(行人外接矩形)
hitThreshold:特征与SVM分类平面之间距离的阈值。通常为0,应在检测器系数中指定(作为最后一个自由系数)
winStride:窗口步长
padding:填充
scale:检测窗口增加的比例系数
finalThreshold:最终阀值,默认2.0
useMeanshiftGrouping:分组算法,默认false,一般不用,因为速度较慢

  ps:一般情况下detectMultiScale使用默认参数就行

2、代码示例

Mat src = imread(filePath);
    if(src.empty()){
        qDebug()<<"图像为空";
        return;
    }
    Mat gray;
    cvtColor(src,gray,COLOR_BGR2GRAY);

    //hog+svm实现行人检测
    HOGDescriptor hog = HOGDescriptor();
    hog.setSVMDetector(hog.getDefaultPeopleDetector());//使用hog svm实现行人检测
    //多尺度空间检测
    vector<Rect> foundLocations;//检测到行人的矩形区域
    hog.detectMultiScale(src,foundLocations);//后面的参数使用默认就行,这是opencv的经验值
//    hog.detectMultiScale(src, foundLocations, 0, Size(1, 1), Size(8, 8), 1.05, 2);
    //将行人矩形框绘制出来
    Mat result = src.clone();
    for(size_t i =0;i<foundLocations.size();i++){
        rectangle(result,foundLocations[i],Scalar(0,0,255),2,8,0);
    }
    imshow("result",result);
    pixmap = imageutils::matToQPixmap(result);
    label->setPixmap(pixmap.scaled(this->size(),Qt::KeepAspectRatio,Qt::SmoothTransformation));

3、图片演示

 本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: OpenCVSharp是一个开源计算机视觉库,它为.NET Framework提供了对OpenCV库的封装。HOG描述符是一种在目标检测中使用的特征描述符,对于识别行人、车辆和动物等对象非常有效。HOG描述符的构建基于梯度方向直方图,通过将图像分成小的细胞,计算每个细胞的梯度运算结果,并根据梯度方向量化到梯度方向直方图中,最终组合得到一个特征向量。 在OpenCVSharp中,HOG描述符提取可通过使用HOGDescriptor类来实现。该类提供了多个构造函数,可以设置图像块的大小、细胞的大小和区块的数量等参数。为了在目标检测中使用HOG描述符,我们需要将提取到的特征向量传递给SVM分类器进行训练和预测。OpenCVSharp也提供了SVM类来实现SVM分类器,我们可以使用SVM.Train和SVM.Predict方法来分别进行训练和预测。 HOG描述符在目标检测中有着广泛的应用,可用于从图像、视频流或摄像头实时流中检测行人和车辆等。通过使用OpenCVSharp中的HOGDescriptor和SVM类,我们可以轻松地实现HOG描述符的构建和使用,从而提高目标检测的准确率和效率。 ### 回答2: OpenCvSharp HogDescriptorOpenCvSharp库中的一个特征提取器,它利用方向梯度直方图(HOG)的方法进行特征提取。HOG是一种用于目标检测的特征提取方法,它通过计算图像局部梯度的方向直方图来描述图像的局部特征。HOG特征提取器可以把图像分成若干个小块,然后计算每个块内像素的梯度直方图特征,再进行归一化处理,最后把这些特征向量组合成一个完整的特征向量作为输入送到分类器中。 OpenCvSharp HogDescriptor提供了一系列函数来实现HOG特征提取器的操作,包括计算图像的HOG特征、设置HOG描述符参数、计算HOG描述符函数等。此外,OpenCvSharp HogDescriptor还支持多个窗口大小,方便用户根据目标大小和分辨率进行调整。HOG特征提取器在目标检测、行人识别、人脸检测等领域有广泛的应用。通过OpenCvSharp HogDescriptor,用户可以方便地实现HOG特征的提取和处理,为图像处理和目标检测提供强大的支持。 ### 回答3: opencvsharp hogdescriptor是一种基于图像处理OpenCV的图像特征描述符。HoG即方向梯度直方图,它是一种用于物体检测、行人检测等任务的图像特征描述符。它的基本思想是将图像分成小的单元,计算每个单元内像素点的梯度方向和强度,并将这些信息以直方图的形式表示出来,从而形成特征描述符。 在OpenCV中,HOGDescriptor类提供了一些计算HoG特征的方法,其中包括计算图像梯度、构建单元、计算直方图、归一化等步骤。opencvsharp hogdescriptor则是将这些方法封装为一个C#库,方便使用C#开发者进行图像特征提取的工作。 通过使用opencvsharp hogdescriptor,开发者可以轻松实现基于HoG的物体检测、行人检测等任务。同时,它还支持多线程计算和GPU加速,提高了计算效率。另外,它还提供了一些参数可以供开发者进行调整,如窗口大小、像素步长等,以适应不同的应用场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值