题目:在Opencv中利用HOG进行行人检测
程序代码如下:
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main()
{
Mat image = imread("E:\\code\\3.jpg");
if (image.empty())
{
cout << "read imagefailed" << endl;
}
// 1. 定义HOG对象
HOGDescriptor hog; // 采用默认参数
// 2. 设置SVM分类器
hog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector()); // 采用已经训练好的行人检测分类器
// 3. 在测试图像上检测行人区域
vector<Rect> regions;
hog.detectMultiScale(image, regions, 0, Size(8, 8), Size(32, 32), 1.05, 1);
// 显示
for (size_t i = 0; i < regions.size(); i++)
{
rectangle(image, regions[i], Scalar(0, 0, 255), 2); //对判定是行人的区域画一个正方形标记一下
}
imshow("行人检测", image);
waitKey(0);
return 0;
}
运行结果: