我有一个项目,我想检测图像中的物体;我的目标是使用 HOG 功能。通过使用 OpenCV SVM 实现,我可以找到用于检测人的代码,并且我阅读了一些关于调整参数以检测对象而不是人的论文。不幸的是,由于一些原因我无法做到这一点;首先,我可能错误地调整了参数,其次,我不是一个好的 C++ 程序员,但我必须使用 C++/OpenCV 来做到这一点......here https://code.ros.org/trac/opencv/browser/trunk/opencv/samples/c/peopledetect.cpp?rev=2314您可以找到使用 C++/OpenCV 检测人的 HOG 特征的代码。
假设我想检测其中的对象image http://4.bp.blogspot.com/_T0xDt-BeZ74/TSi61YXwjFI/AAAAAAAAAFc/zEtHc8IVTnQ/s1600/shampoo_004-1.jpg。现在,我将向您展示我尝试在代码中更改的内容,但对我来说没有成功。
我尝试更改的代码:
HOGDescriptor hog;
hog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector());
我尝试改变getDefaultPeopleDetector()
具有以下参数,但它不起作用:
(Size(64, 128), Size(16, 16), Size(8, 8), Size(8, 8), 9, 0,-1, 0, 0.2, true, cv::HOGDescriptor::DEFAULT_NLEVELS)
然后我尝试制作一个向量,但是当我想打印结果时,它似乎是空的。
vector<float> detector;
HOGDescriptor hog(Size(64, 128), Size(16, 16), Size(8, 8), Size(8, 8), 9, 0,-1, 0, 0.2, true, cv::HOGDescriptor::DEFAULT_NLEVELS);
hog.setSVMDetector(detector);
拜托,我需要帮助解决这个问题。