如何使用光流和运动矢量跟踪或预测已找到轮廓的路径



我正在用OpenCV python编写一个项目。这基本上是一个交通监控的最后一年项目。。现在我已经编码到目前为止,当运行时,它会在视频中识别车辆,并在这些车辆上绘制一个矩形和质心。现在我想做的是绘制运动矢量或跟踪上面找到的轮廓,即车辆。我不知道在这种情况下,opencv光流函数的论点是什么。。有人能帮我吗?谢谢这是代码的轮廓查找部分。。

image, contours, hierarchy = cv2.findContours(fgmask.copy(), cv2.RETR_EXTERNAL,
                                       cv2.CHAIN_APPROX_NONE)
    try: hierarchy = hierarchy[0]
    except: hierarchy = []

    #Drawing Rectangles arround contours (Vehicles)
    for contour, hier in zip(contours, hierarchy):
        (x,y,w,h) = cv2.boundingRect(contour)
        if w > 8 and h > 8:
            cv2.rectangle(frame, (x,y), (x+w,y+h), (255, 0, 0), 2)

我认为您不能使用OpticalFlow。我建议你调查一下KalmanFilter。有了它,您可以从历史中跟踪、平滑和预测运动矢量。

好吧,我以前也做过。您将需要2帧。但是,如果提取一个子图像,其中包含前一个检测到的对象的4个角和当前帧中该车辆的4个角落,则可以更快地完成处理,矩形应尽可能小,并且在两个图像中都应匹配。之后,您可以应用光流功能:

cv::calcOpticalFlowFarneback(prvsRgle,currentRgle,flow, 0.5, 3, 5, 5, 7, 1.5, 0);

这里有一些有用的链接,你应该访问:1,2和我最喜欢的3

最新更新