0

最近我对使用“haarcascade_frontalface_alt2.xml”进行人脸检测时发生的一些奇怪的事情感到困惑

假设在网络摄像头拍摄的视频中检测到我的脸,虽然我的脸和相机都没有移动,但返回的人脸坐标和大小会发生一点变化。为什么会发生这种情况?有没有办法改进它?

谢谢

4

1 回答 1

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 越大,抑制噪声/变化的次数就越多(因此值的随机变化越少)。但是,随着该值变大,您也会注意到更多的滞后。例如,当您移动脸部时,您可能会发现“检测到”的脸部位置落后于脸部的当前位置。这是您需要根据您遇到的噪音量和应用程序所需的速度做出的权衡。

于 2014-03-18T16:06:27.683 回答