cv2在特定矩形上运行光流

时间:2017-11-14 03:49:07

标签: python opencv opticalflow cv2

我正在使用OpenCV的光流模块。我理解文档中的示例,但这些示例采用整个图像,然后在图像上获得光流。

我只想将它传递给图像的某些部分。有可能吗?如果是,我该怎么做呢?

谢谢!

1 个答案:

答案 0 :(得分:0)

是的,这是可能的。 cv2.calcOpticalFlowPyrLK()将是您需要的光流功能。在进行该函数调用之前,您必须创建一个图像掩码。我做了一个类似的项目,但在C ++中,虽然我可以为你概述步骤:

  • 创建一个具有相同图像宽度和高度的空矩阵
  • 使用投资回报率中的点数,从中创建一个形状(我使用cv2.fillPoly()完成)并用白色填充形状内部(您的图像蒙版应仅由黑色和白色)
  • 如果您打算将角落用作功能,请致电cv2.goodFeaturesToTrack()并传递您作为其参数之一制作的面具。
  • 如果您使用Feature2D模块检测功能,则可以使用相同的蒙版仅提取该蒙版区域中的功能。
  • 通过此步骤,您现在应该拥有一组仅在形状范围内的要素/点!调用光流功能,然后处理结果。

我希望有所帮助。