首页 > 代码库 > hog&svm

hog&svm

hog&svm的方法已经非常经典,广泛使用在多种行业,并且集成在了硬件中。应该说作为运动检测的一种重要方法,使用的情况还是非常广泛的。
 
 
(opencv自带的分类器)
int main()
{
 
                Mat src = http://www.mamicode.com/imread( "1.png");
                HOGDescriptor hog; //HOG特征检测器
                hog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector()); //设置SVM分类器为默认参数
                vector<Rect> found, found_filtered; //矩形框数组
                hog.detectMultiScale(src, found, 0, Size(8,8), Size(32,32), 1.05, 2); //对图像进行多尺度检测
 
                cout<< "矩形个数:" <<found.size()<<endl;
                 //找出所有没有嵌套的矩形框r,并放入found_filtered中,如果有嵌套的话,则取外面最大的那个矩形框放入found_filtered中
                 for(int i=0; i < found.size(); i++)
                {
                                Rect r = found[i];
                                 int j=0;
                                 for(; j < found.size(); j++)
                                                 if(j != i && (r & found[j]) == r)
                                                                 break;
                                 if( j == found.size())
                                                found_filtered.push_back(r);
                }
                cout<< "过滤后矩形的个数:" <<found_filtered.size()<<endl;
 
                 //画矩形框,因为hog检测出的矩形框比实际人体框要稍微大些,所以这里需要做一些调整
                 for(int i=0; i<found_filtered.size(); i++)
                {
                                Rect r = found_filtered[i];
                                r.x += cvRound(r.width*0.1);
                                r.width = cvRound(r.width*0.8);
                                r.y += cvRound(r.height*0.07);
                                r.height = cvRound(r.height*0.8);
                                rectangle(src, r.tl(), r.br(), Scalar(0,255,0), 3);
                }
 
                imwrite( "ImgProcessed.jpg",src);
                namedWindow( "src",0);
                imshow( "src",src);
                waitKey(); //注意:imshow之后一定要加waitKey,否则无法显示图像                
                system( "pause");
}
这里体现出来的,主要就是对已经成功的分类器的使用方法。那么在这个hog&svm中,找到正确的hog特征,识别出正确的svm是最重要的。
效果很一般。