opencv2以后加入了hog相关的内容,并且给出了示例,用的是法国人Navneet Dalal最早在CVPR2005会议上提出的方法。
先是使用HOG进行People Detection的,已经提供了完整的方法,在peopledetect.cpp中,主要的方法有HOG特征提取以及训练还有识别,你可以通过 hog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector());用已经训练好的模型直接检测。用hog.detectMultiScale(...)进行检测。
1.程序说明
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <stdio.h>
#include <string.h>
#include <ctype.h>
using namespace cv;
using namespace std;
//const char* image_filename = "people.jpg";
const char* image_filename = "./../2.jpg";
void help()
{
printf(
"\nDemonstrate the use of the HoG descriptor using\n"
" HOGDescriptor::hog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector());\n"
"Usage:\n"
"./peopledetect (<image_filename> | <image_list>.txt)\n\n");
}
int main(int argc, char** argv)
{
Mat img;
FILE* f = 0;
char _filename[1024];
if( argc == 1 )
{
printf("Usage: peopledetect (<image_filename> | <image_list>.txt)\n");
//return 0;
}
if (argc >1)
{
image_filename = argv[1];
}
img = imread(image_filename);
if (!img.data)
{
printf( "Unable to load the image\n"
"Pass it as the first parameter: hogpeopledete