def update_tracker(response,img_size,pos,HOG_flag,scale_factor=1):
start_w,start_h = response.shape
w,h = img_size
px,py,ww,wh = pos
res_pos = np.unravel_index(response.argmax(),response.shape)
scale_w = 1.0*scale_factor*(ww*2)/start_w
scale_h = 1.0*scale_factor*(wh*2)/start_h
move = list(res_pos)
if not HOG_flag:
px_new = [px+1.0*move[0]*scale_w,px-(start_w-1.0*move[0])*scale_w][move[0]>start_w/2]
py_new = [py+1.0*move[1]*scale_h,py-(start_h-1.0*move[1])*scale_h][move[1]>start_h/2]
px_new = np.int(px_new)
py_new = np.int(py_new)
else:
move[0] = np.floor(res_pos[0]/32.0*(2*ww))
move[1] = np.floor(res_pos[1]/32.0*(2*wh))
px_new = [px+move[0],px-(2*ww-move[0])][move[0]>ww]
py_new = [py+move[1],py-(2*wh-move[1])][move[1]>wh]
if px_new<0: px_new = 0
if px_new>w: px_new = w-1
if py_new<0: py_new = 0
if py_new>h: py_new = h-1
ww_new = np.ceil(ww*scale_factor)
wh_new = np.ceil(wh*scale_factor)
new_pos = (px_new,py_new,ww_new,wh_new)
return new_pos
评论列表
文章目录