我想使用hog实现的opencv,以检测身体在图像。我在opencv的文件夹示例中发现了peopledetect.cpp,它是使用预训练模型的hog算法的默认实现。稍微谷歌一下,我发现这种默认的方法不能令人满意地工作。我必须使用libSvm创建自己的模型。我的第一个问题是有任何教程或例子来解释这个过程吗?第二,我的模特应该学些什么?我要做什么训练样本?只包含人的图片?
编辑问题:是否有机会培养一种只包含人体图像的一级模型?我正在努力理解代码在这里。它计算了一个数据库的hog特性,并训练了一个svm模型。在评价过程中,采用了hog级联和detectMultiScale。detectMultiScale与支持向量机的关系是什么?
我用从这里开始提供的图像训练了一个带有线性内核的libsvm。图像有两种,一种是包含人的,一种是没有人的。训练结果接近98%( svm_predict)。如何定位人体在测试图像中的位置?我能用多尺度探测来达到这个目的吗?用svm模型馈电多尺度函数?在我的svm模型中,我注意到一些支持向量在行的乞讨中没有标签,但是只有符号。这是正常的事情还是可能是个窃听器?
它似乎对我不起作用(图像中的F.E):
CascadeClassifier body_cascade;
body_cascade.load("cascades/hogcascade_pedestrians.xml");
Mat image, gray_image;
image = imread( fileName, 1 );
resize(image, image, Size(150, 200));
vector<Rect> bodies;
cvtColor(image, gray_image, CV_BGR2GRAY);
body_cascade.detectMultiScale( gray_image, bodies, 1.3, 5 );
cout << "size of detection" << bodies.size() << endl;每次我都有0具身体。
发布于 2014-10-08 14:09:18
发布于 2014-10-08 13:00:42
https://stackoverflow.com/questions/26254181
复制相似问题