2013-03-16 20 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越大,你就越能抑制噪聲/變化(如此少值的隨機變化)。但是,隨着價值越來越大,您也會注意到更多的滯後。例如,當你移動你的臉時,你可能會發現你的臉的「檢測到」位置落後於你臉部的當前位置。根據您所遇到的噪音數量和您的應用程序所需的速度,這是您需要做出的權衡。