我想使用opencv的hog实现来检测图像中的物体。我在opencv的文件夹示例中找到了peopledetect.cpp,它们是使用预训练模型的hog算法的默认实现。通过一点谷歌搜索,我发现这种默认方法并不令人满意。我必须使用libSvm创建自己的模型。我的第一个问题是有没有解释此过程的教程或示例?第二,我的模特想要学习什么?什么是我训练样本?只包含人物的图片?
编辑问题:是否有机会训练一个单一的模型,只包含人体图像?我想了解代码in here。它计算数据库的生猪特征并训练svm模型。在评估过程中,它使用带有detectMultiScale的hog级联。 detectMultiScale与SVM的关系是什么?
我训练了一个带有线性内核的libsvm,其中提供的图像为from here。图像有两种,一种是人,另一种是人。火车结果接近98%(wuth svm_predict)。如何在测试图像中找到物体的位置?我可以为此目的使用detectmultiscale吗?使用svm模型提供多重功能?我注意到在我的svm模型中,一些支持向量在行的开始时没有标签而是只有符号。这是正常的,还是可能是一个错误?
Hogcascade似乎它对我不起作用(见image中):
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个尸体。
答案 0 :(得分:2)
答案 1 :(得分:2)