HOG特征+SVM行人检测

HOG特征+SVM行人检测

API介绍:

 

 1 #include <opencv2/opencv.hpp>
 2 #include <iostream>
 3 
 4 using namespace cv;
 5 using namespace std;
 6 
 7 int main(int argc, char** argv) {
 8     Mat src = imread("L:/opencv_picture/ren4.jpg");
 9     if (src.empty()) {
10         printf("could not load image...
");
11         return -1;
12     }
13     namedWindow("input image", CV_WINDOW_AUTOSIZE);
14     imshow("input image", src);
15 
16     /*
17     Mat dst, dst_gray;
18     resize(src, dst, Size(64, 128));
19     cvtColor(dst, dst_gray, COLOR_BGR2GRAY);
20     HOGDescriptor detector(Size(64, 128), Size(16, 16), Size(8, 8), Size(8, 8), 9);
21 
22     vector<float> descriptors;
23     vector<Point> locations;
24     detector.compute(dst_gray, descriptors, Size(0, 0), Size(0, 0), locations);
25     printf("number of HOG descriptors : %d", descriptors.size());
26     */
27     HOGDescriptor hog = HOGDescriptor(); //将hog作为HOGDescriptor的一个函数名
28     hog.setSVMDetector(hog.getDefaultPeopleDetector()); 
29     //让hog函数内的setSVMDetector参数为getDefaultPeopleDetector()做行人检测
30 
31     vector<Rect> foundLocations;   //定个一个变量行人矩形框
32     hog.detectMultiScale(src, foundLocations, 0, Size(2, 2), Size(32, 32), 1.05, 2);
33     //多个尺度的行人的寻找,采用不同的开窗大小检测。
34     //参数:1.检测图像 2.检测结果 3.默认为0 4.滑框每次移动步长 5.图像扩充大小 6.图像尺度(高斯金字塔) 7.默认
35     // 第四个参数越大,检测窗口移动的步长越大,检测的目标个数越小
36      //第五个参数:pad size 有(8, 8), (16, 16), (24, 24), (32, 32).适当的pad可以提高检测的准确率
37     //6.scale参数可以具体控制金字塔的层数,参数越小,层数越多,检测时间也长。通常scale在1.01-1.5这个区间
38     Mat result = src.clone();
39     for (size_t t = 0; t < foundLocations.size(); t++) {
40         rectangle(result, foundLocations[t], Scalar(0, 0, 255), 2, 8, 0);
41     }
42     namedWindow("HOG SVM Detector Demo", CV_WINDOW_AUTOSIZE);
43     imshow("HOG SVM Detector Demo", result);
44     
45     waitKey(0);
46     return 0;
47 }

我这里的 pad size取的size(2,2)的检测效果:

原图:                                                                                                                效果图:

                        

原文地址:https://www.cnblogs.com/Jack-Elvis/p/11805060.html