HOG特征即方向梯度直方图(Histogram of Oriented Gradient, HOG)是一种常用的特征提取方法,HOG+SVM在行人检测中有着优异的效果。OpenCV中本已经自带了该实现。
HOG的实现步骤还是不太难的,帮助理解的博客:https://blog.csdn.net/shenziheng1/article/details/72581992我不信你看不懂!顺带知道了图像的梯度幅值和梯度方向。还有另外一篇帮助理解特征个数的博文https://blog.csdn.net/chaipp0607/article/details/70888899
还有一篇介绍参数的博文https://www.cnblogs.com/zhazhiqiang/p/3595266.html
虽说步骤不太难,不过为什么这么做我还是不太清楚,用用就行,接下来就是对视频流中的行人进行检测。
#include "pch.h"
#include <iostream>
#include <opencv2\opencv.hpp>
using namespace cv;
using namespace std;
int main()
{
cv::VideoCapture cap("aa.mp4");
HOGDescriptor hog;
hog.setSVMDetector(hog.getDefaultPeopleDetector());
Mat img;
vector<Rect> res;
while (cap.read(img))
{
hog.detectMultiScale(img, res);
for (int i = 0; i < res.size(); i++)
{
rectangle(img, res[i], Scalar(255, 0, 0));
}
imshow("src", img);
waitKey(20);
}
cap.release();
}