【发布时间】:2014-12-23 19:17:20
【问题描述】:
我正在做一个项目。项目的一部分包括将 OpenCV 的 HOG 人检测器与摄像头流集成。
目前它正在使用相机和基本的 HOG 检测器 (CPP detectMultiScale -> http://docs.opencv.org/modules/gpu/doc/object_detection.html)。但是效果不是很好...检测非常嘈杂,算法也不是很准确...
为什么?
我的相机图像是 640 x 480 像素。
我使用的 sn-p 代码是:
std::vector<cv::Rect> found, found_filtered;
cv::HOGDescriptor hog;
hog.setSVMDetector(cv::HOGDescriptor::getDefaultPeopleDetector());
hog.detectMultiScale(image, found, 0, cv::Size(8,8), cv::Size(32,32), 1.05, 2);
为什么不能正常工作?有什么需要提高准确性的?是否需要特定的图像尺寸?
PS:你知道一些精确的人检测算法吗,速度更快,在 cpp 中开发?
【问题讨论】:
-
图像中的人必须至少具有 HOG 描述符的大小(不过要小一些),并且除了检测多尺度(afaik)之外,只会发现更大的人。您不能期望对此类一般“对象”的检测率接近 100%,但在流中您应该至少检测每个真实的人一次。您可以尝试跟踪这些人并验证/拒绝您之前检测到的人。
-
感谢您的回答米卡!你说:“至少是 HOG 描述符的大小”...但是 这个大小是多少? 你知道其他可能性还是只存在“getDefaultPeopleDetector”?非常感谢!!
-
这个网站可能对你有帮助:geocities.ws/talh_davidc