【发布时间】:2016-09-12 15:03:33
【问题描述】:
我正在尝试让 OpenCV 库提供的人员检测器运行。到目前为止,我在我的 iPhone 6 上获得了不错的性能,但检测非常糟糕,几乎永远不会正确,我不确定为什么会这样,因为您可以使用相同的默认 HOG 描述符找到示例视频,并且检测效果更好。
代码如下:
- (void)processImage:(Mat&)image {
cv::Mat cvImg, result;
cvtColor(image, cvImg, COLOR_BGR2HSV);
cv::vector<cv::Rect> found, found_filtered;
hog.detectMultiScale(cvImg, found, 0, cv::Size(4,4), cv::Size(8,8), 1.5, 0);
size_t i;
for (i=0; i < found.size(); i++) {
cv::Rect r = found[i];
rectangle(image, r.tl(), r.br(), Scalar(0,255,0), 2);
}
}
视频输入来自 iPhone 相机本身,每帧都会调用“processImage:”。对于 HOGDescriptor,我使用默认的人员检测器:
_hog.setSVMDetector(cv::HOGDescriptor::getDefaultPeopleDetector());
感谢您的帮助。 :)
【问题讨论】:
-
删除
cvtColor(image, cvImg, COLOR_BGR2HSV);这一行,然后重试。 -
自然
hog.detectMultiScale(image... -
我之前试过,然后我得到这个错误:
OpenCV Error: Assertion failed (img.type() == CV_8U || img.type() == CV_8UC3) in computeGradient
标签: c++ ios iphone opencv object