请教光点检测光源碰撞后id丢失问题
我是用阈值检测光点移动,如果目标间距离大,没什么问题,如果目标出现碰撞或距离过近,会造成id的污染,比如1号和2号靠在一起以后又分开变成了只有一号
if x_chazhi ** 2 + y_chazhi ** 2 < 50:
if len(center) < 3:
center = center + [pre_center[2]]
now_lists.append(center)
cv2.putText(im, "{}".format(center[2]), (int(center[0] - 6), int(center[1] - 4)),
cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 0, 255), 1)
continue
elif len(center) == 3:
center[2]=pre_center[2]
now_lists.append(center)
cv2.putText(im, "{}".format(center[2]), (int(center[0] - 6), int(center[1] - 4)),
cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 0, 255),
我使用的代码如上,是利用了坐标点与上一帧坐标点间距的平方进行判定,先遍历现在帧的坐标点,每个坐标点再与上一帧的所有坐标点进行比较,按距离进行id继承。这方法一旦碰上目标间碰撞就会出现以下情况
两光点靠近后,阈值分割是一个整体,进行距离判定时,这个点只会判定一次,只有一个id,他们分开以后就会追踪两个一模一样的id。光点运动轨迹还非常不规律不太好写预测点