【问题标题】:cv2 running optical flow on particular rectanglescv2 在特定矩形上运行光流
【发布时间】:2017-11-14 03:49:07
【问题描述】:

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

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

谢谢!

【问题讨论】:

    标签: python opencv opticalflow cv2


    【解决方案1】:

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

    • 创建一个与图像宽度和高度相同的空矩阵
    • 使用 ROI 中的点,创建一个形状(我使用 cv2.fillPoly() 做我的)并用白色填充形状的内部 (您的图像蒙版应该只由黑白组成)
    • 如果您打算将角用作特征,则调用cv2.goodFeaturesToTrack() 并传入您制作的掩码作为其参数之一。
    • 如果您使用 Feature2D 模块检测特征,则可以使用相同的掩码仅提取该掩码区域中的特征。
    • 通过这一步,您现在应该拥有一组仅在形状边界内的特征/点!调用光流函数,然后处理结果。

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-11
      • 1970-01-01
      • 1970-01-01
      • 2017-07-14
      • 2020-08-04
      相关资源
      最近更新 更多