我正在用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)发布于 2015-12-14 23:24:03
我不认为你能用OpticalFlow做到这一点。我建议你调查一下KalmanFilter。这样,您就可以跟踪、平滑和预测历史中的运动矢量。
发布于 2015-12-15 07:02:15
好吧,我以前也这么做过。你需要2帧。但是,如果您提取一个包含前一个检测到的对象的4个角和当前帧中该车辆的4个角的子图像,则可以更快地完成处理,矩形应该尽可能小,并且它应该在两个图像中都匹配。之后,您可以应用光流函数:
cv::calcOpticalFlowFarneback(prvsRgle,currentRgle,flow, 0.5, 3, 5, 5, 7, 1.5, 0);这里有一些你应该访问的有用的链接:1,2和我最喜欢的3
https://stackoverflow.com/questions/34270578
复制相似问题