我有一个应用程序使用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
的含义,因为我对cascadecclassifier -detectmultiscale文档的含义不是很清楚。谢谢你。
scaleFactor参数用于确定函数将查找多少个不同大小的眼睛。通常这个值为1.1是最好的检测。将此参数设置为1.2或1.3会更快地检测到眼睛,但不会经常发现它们,这意味着准确性下降。
minNeighbors用于告诉检测器在检测到眼睛时应该有多确定。通常这个值被设置为3,但如果你想要更高的可靠性,你可以把它设置得更高。值越高,精度越低,但可靠性越高
标志用于设置特定的首选项,例如查找最大的对象或跳过区域。默认值= 0。设置此值可以使检测更快