1 说明
检测+跟踪+关联的应用,每隔n帧做一次目标检测+关联,中间的n-1帧做跟踪。
目标识别采用基于OPENCV的dnn模块,跟踪也是OPENCV内的多目标跟踪器MultiTracker,目标关联我实际用的是同事的算法这里不会给出,简单实现一个凑合一下。
2 流程
目标关联是使目标形成航迹,我们检测需求通常是要对一个对象进行连续且一致的识别。因为目标识别存在虚警,上次识别出来的目标在这次可能漏掉,目标关联也可以保持前面的识别结果来维持跟踪,减小漏警率。当然维持跟踪也会增加虚警率,这里只维持1个识别周期。关联算法很重要,目标的运动特性、大小变化都需要关联算法来计算。
3 代码
VS项目配置好OPENCV4.5的链接库就能编译运行,dnn的目标识别调用部分没写,我测试用的涉及保密发不了。
https://download.csdn.net/download/weixin_45720771/14908334
detectAndTrack.h 是识别跟踪类的封装
targetrecognition.h 是dnn识别算法的封装
TargetTrack_Test.cpp 是测试代码
启动后控制台输入q,运行单目标识别
输入w,运行识别+跟踪
效率上其实知道跟踪算法和识别算法各自的效率就能计算了。