我有一个应用程序使用Haar级联来检测从摄像机捕获的图像中的眼睛。使用的方法是:
void CascadeClassifier::detectMultiScale(const Mat& image, vector<Rect>& objects, double scaleFactor=1.1, int minNeighbors=3, int flags=0, Size minSize=Size(), Size maxSize=Size())
默认值为scaleFactor
,minNeighbors
和flags
,效果非常好,但无法检测到某些人的眼睛。所以我想提高眼睛检测的准确性。看起来像“级联分类器训练”并创建自定义级联分类器是一个很好的解决方案但是在走这条路之前
可以通过调整方法中的一些参数来提高检测精度吗?请详细说明scaleFactor
,minNeighbors
和flags
的含义,因为来自cascadeclassifier-detectmultiscale文档的含义对我来说并不十分清楚。谢谢。
答案 0 :(得分:23)
scaleFactor参数用于确定函数将查找的眼睛的大小。通常该值为1.1以获得最佳检测。将此参数设置为1.2或1.3可以更快地检测眼睛,但不会经常发现它们,这意味着精度会下降。
minNeighbors用于告诉探测器在检测到眼睛时应该有多确定。通常此值设置为3,但如果您想要更高的可靠性,可以将其设置得更高。值越高意味着精度越低但可靠性越高
标志用于设置特定首选项,例如查找最大对象或跳过区域。默认此值= 0.设置此值可以使检测更快