2013-03-16 18 views
0

最近我通过一些奇怪的事情,当我这样做的人脸检测与“haarcascade_frontalface_alt2.xml”精度的人脸检测与haarcascade

说我检测通过网络摄像头拍摄的视频脸部时发生混淆虽然没有我的脸照相机也不动,返回的面部的坐标和大小会稍微变化。为什么会发生这种情况?有没有办法改进它?

谢谢

回答

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