c++ - haar 分类器的最佳参数

标签 c++ opencv computer-vision object-detection

我正在尝试使用提供的 xml 文件 haarcascade_frontalface_althogcascade_pedestrians.xml 检测人脸和行人。到目前为止,我可以进行一些检测,但是行人检测很差,人脸检测很一般。我正在使用 640x480 或 480x640 图像在 iphone 上执行此操作。我也可以使图像更大,但处理速度更快。此外,我可能会将处理移至服务器,但问题仍然存在。截至目前,我正在这样做以获得结果。

面孔:下面的第一个面孔甚至不起作用。它不会编译。

faceDetector.detectMultiScale(matgrey, faces, 1, 1, 2, 0|CV_HAAR_SCALE_IMAGE, cv::Size(30,30));

所以我求助于下面的函数调用。

faceDetector.detectMultiScale(matgrey, faces);

行人:

hog.detectMultiScale(rgbMat, found, 0, cv::Size(8,8), cv::Size(32,32), 1.05, 2);

我真的很想提高结果质量。我很好奇为此更改参数是否会增强结果。我想要最佳结果,因此处理时间不是大问题。

谢谢,任何反馈都会很棒。

最佳答案

对于人脸检测,您不能将第三个参数(即 scaleFactor - 指定图像大小在每个图像比例下缩小多少的参数)设置为 1,这您将失去以多尺度方式搜索面孔的能力,因为它无法重新调整大小。尝试将其更改为 1.05(即默认值)或其他值。

要获得更好的面部检测,请查看 this thread对于 CascadeClassifier::detectMultiScale() 的推荐值参数,.


对于行人检测,为了提高它的质量,你应该尝试修改HOGDescriptor::detectMultiScale()的第三个(即 hit_threshold)和最后一个参数(即 group_threshold)。

特别是,为了获得更好的行人检测结果,你应该把它们都调高:

  • hit_threshold:特征与 SVM 分类平面之间距离的阈值。
  • group_threshold:调节相似度阈值的系数。检测到时,某些对象可以被许多矩形覆盖。在一组矩形中使用阈值来保留它。

关于c++ - haar 分类器的最佳参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23374685/

相关文章:

python - opencv中具有一定像素高度、宽度的视频

c++ - 从文件对象到文件名

python - 使用 OpenCV 进行圆检测

OpenCV:Ubuntu:NetBeans:cvSubdiv2DEdgeOrg "undeclared"

c# - 从_capture.QueryFrame()删除背景

c++ - 如何使所有图像大小相同并将它们写入一个文件夹

javascript - 使用 d3 和 numericjs 在 javascript 中绘制误差椭圆

c++ - Linux Networking IO Noob : Select() and Recvfrom, 阻塞还是非阻塞?

c++ - 如何设置 QComboBox 宽度以适合最大项目?

C++ 继承 : Avoid calling default constructor of base class