问题标签 [opticalflow]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1227 浏览

c++ - OpenCV 接触光流的时间

我正在尝试使用 C++ 和 OpenCV 编写一个程序,该程序计算与对象碰撞之前的剩余时间(帧)。作为示例视频,我有一个相机朝着黑板移动。

我对此的方法如下:

  1. 检测要跟踪的特征(尝试过 goodFeaturesToTrack() 或“手动”设置点)
  2. 通过 calcOpticalFlowPyrLK() 计算光流
  3. 通过 findFundamentalMat() 计算先前和当前找到的特征的基本矩阵
  4. 检查基本矩阵是否正确
  5. 计算极线和极线——视频中展开的重点

最后,我打算使用接触时间的方法来计算碰撞前的剩余帧数。

到目前为止,我最大的问题是找到正确的基本矩阵,从而找到极点。计算出的矩阵似乎是错误的,极线也是如此。我计划的方法是否正确?有没有人有一个从视频中获取 FoE 的工作示例或任何关于我必须做什么的演练?

我会很高兴得到任何帮助!

谢谢!

0 投票
2 回答
1545 浏览

opencv - 光流适用于放大和缩小

我想知道光流算法是否可以用于缩放。我有一个视频,其中包含放大和缩小的网页剪辑。

0 投票
1 回答
1000 浏览

opencv - 绘制 calcOpticalFlow 的输出特征向量时跟踪不准确

我一直在尝试开发一个简单的特征跟踪程序。用户用鼠标在屏幕上勾勒出一个区域,并为这个区域创建一个遮罩并传递给 goodFeaturesToTrack。然后将函数找到的特征绘制在屏幕上(由蓝色圆圈表示)。

接下来,我将函数返回的特征向量传递给 calcOpticalFlowPyrLk 并在屏幕上绘制结果向量(由绿色圆圈表示)。尽管程序正确地跟踪了流动方向,但由于某种原因,calcOpticalFlow 函数输出的特征与屏幕上对象的位置不一致。

我觉得这似乎是我使用的逻辑中的一个小错误,但我似乎无法分解它,我非常感谢你们的帮助。

我已经在下面发布了我的代码,对于全局变量和混乱的结构,我深表歉意。我目前只是在测试,并计划在运行后立即清理并转换为 OOP 格式。

同样,这是我上传的 YouTube 视频的链接,该视频演示了我正在打击的行为。

0 投票
1 回答
10476 浏览

c++ - 基于 calcOpticalFlowFarneback 的 OpenCV 翘曲图像

我正在尝试使用密集光流对图像进行复杂的扭曲。我正在尝试将第二张图像扭曲成与第一张图像大致相同的形状。

我从两个灰度帧计算流量。我现在正在尝试使用该cv::remap功能使用此流信息重新映射我的原始(即非灰度)图像。但是,我从中得到了一个非常严重扭曲的图像。我只是最终得到一个与我的原始图像有点相似的橙色和黑色图像。

如何使用cv::remap计算flow

0 投票
1 回答
2535 浏览

opencv - 如何从 cvCalcOpticalFlowPyrLK 中提取像素的速度向量

任何人都可以帮我从 OpenCV 中获取每个像素的速度信息cvCalcOpticalFlowPyrLK吗?

0 投票
0 回答
2343 浏览

opencv - 使用 OpenCV 和光流进行旋转和位置跟踪

我想使用光流跟踪 OpenCV 中对象的旋转和平移。到目前为止,我有这样的事情:

  1. 调用 goodFeaturesToTrack 查找初始特征
  2. 调用 calcOpticalFlowPyrLK 跟踪特征点的移动
  3. 调用 findHomography 查找图像 A 中的点如何移动到图像 B
  4. 调用 perspectiveTransform 根据单应性移动点
  5. 调用solvePnPRansac求旋转矩阵和平移向量

在这一点上,我试图获取图像之间的旋转和平移 Mat 之间的差异,并将它们添加到初始旋转和平移矩阵中。

这种方法的问题是平移向量不跟随图像。向量倾向于保持在 [0.02 0.2 -1.5] 范围内

它离这个位置不远。

谢谢。

0 投票
1 回答
4186 浏览

opencv - 使用卡尔曼滤波器和 OpenCV 和处理进行人脸跟踪

我正在尝试为我正在尝试制作的简单游戏执行面部跟踪。我正在使用处理。

我使用 OpenCV 使用 Haar Cascades 进行简单的人脸检测。但是,随着时间的推移,它在平滑跟踪面部方面存在问题。此外,它不会检测到倾斜的脸。

通过一些谷歌搜索,我发现我必须实施卡尔曼滤波器来平滑面部跟踪。但是,这是我第一次听说卡尔曼滤波器,我很难实现它。

我在处理中将这个库用于 OpenCV:https ://github.com/atduskgreg/opencv-processing

如果有人能告诉我如何使用 Processing 或 Java 实现卡尔曼滤波器(因为这个库基于 Java API),那将非常有帮助。

这是我用于人脸检测的代码。这是图书馆的示例草图之一:

0 投票
1 回答
2923 浏览

opencv - OpenCV中的光流和扩展重点

我目前正在做一个项目,需要我使用光流找到扩展的焦点。

我目前有光流,并且正在使用本文第 13-14 页的公式: http ://www.dgp.toronto.edu/~donovan/stabilization/opticalflow.pdf

我从视频中提取两帧并使用 buildOpticalFlowPyramid 从两者中找到金字塔,然后使用 goodFeaturesToTrack 找到关键点。然后我使用这些计算稀疏光流与 calcOpticalFlowPyrLK。这三种方法都由 OpenCV 提供。

我遇到的问题是我需要图像中每个关键点的流向量来填充 A 和 b 矩阵。像素值是否只是原始图像中关键点的位置?那么流向量是初始位置和新点之间的差异吗?

0 投票
2 回答
16874 浏览

opencv - KLT 在 OpenCV 中是如何工作的?

我很好奇 openCV 中 KLT 背后的逻辑。

据我所知,在 OpenCV 中寻找光流的图像首先被转换为灰度。

我很好奇的是,在运行算法时,我们需要一组特征进行计算。在 openCV 中寻找光流法有哪些特点?

谢谢 :)

0 投票
1 回答
1199 浏览

c++ - OpencCV:calcOpticalFlowSF 函数

我尝试使用 calcOpticalFlowSF() 函数,但是当我启动它时,程序没有响应,这里是使用它的代码部分:

我知道错误来自函数 calcOpticalFlowSF,因为如果我评论它,程序就可以工作。我使用的图片与他们在 SimpleFlow 演示中使用的图片相同。如果你看这里:如何让 cv::calcOpticalFlowSF 工作?看来他对功能本身没有问题......

你知道为什么它不起作用吗?

谢谢,

此致。