haarcascade人脸检测的准确性

时间:2013-03-16 17:20:02

标签: opencv face-detection

最近,当我使用“haarcascade_frontalface_alt2.xml”进行面部检测时,我感到很困惑。

当在网络摄像头拍摄的视频中检测到我的脸部时说,虽然我的脸部和相机都没有移动,但返回的脸部坐标和大小会有所改变。为什么会发生这种情况?有没有办法改善它?

由于

1 个答案:

答案 0 :(得分:0)

多少钱?只要检测到的面部的坐标和大小值不会大幅跳跃,您就可以使用低通滤波器(即运行平均值)来平滑。

我不知道你使用的语言是什么,但在Python中,它看起来像这样:

filterSize = 3
m = []

while True:
   x, y, sizex, sizey = <getThisFramesFaceParams()> ## Your function here
   m.append([x,y,sizex,sizey])
   if len(m) > filterSize:
      m.pop

   x, y, sizex, sizey = 0, 0, 0, 0
   for i in m:
      x += i[0]
      y += i[1] 
      sizex += i[2] 
      sizey += i[3]   

   # less variation in these values:
   x /= len(m)
   y /= len(m)
   sizeX /= len(m)
   sizeY /= len(m)

您制作filterSize越大,您抑制噪音/​​变化的次数就越多(因此值的随机变化就越小)。但是,随着该值变大,您还会注意到更多滞后。例如,当您移动脸部时,您可能会发现脸部的“检测到”位置落后于您当前的脸部位置。这是您需要根据您遇到的噪音量和所需的应用速度进行权衡。