问题标签 [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 投票
6 回答
26929 浏览

image-processing - 稀疏光流和密集光流有什么区别?

很多资源说有两种类型的光流算法。而Lucas-Kanade是一种稀疏技术,但我找不到稀疏和密集的含义?有人能告诉我密集光流和稀疏光流有什么区别吗?

0 投票
1 回答
2492 浏览

ios - 在 iPad 上使用 OpenCV 避免碰撞

我正在做一个需要使用 OpenCV 实现碰撞避免的项目。这将在 iOS 上完成(iOS 5 及更高版本可以)。

项目目标:这个想法是在汽车的仪表板上安装一个 iPad 并启动应用程序。应用程序应该从相机中抓取帧并处理这些帧以检测汽车是否会与任何障碍物发生碰撞。

我是任何类型的图像处理的新手,因此我在这个项目中陷入了概念层面。

到目前为止我所做的:

  • 看看 OpenCV 并在网上阅读它。使用 Lukas-Kanade Pyramid 方法实现碰撞避免。这是正确的吗?
  • 使用这个项目作为起点:http ://aptogo.co.uk/2011/09/opencv-framework-for-ios/它在我的 iPad 上成功运行,并且捕获功能也可以正常工作,这意味着相机捕获很好 -融合的。我更改了 processFrame 实现以尝试使用光流而不是 Canny 边缘检测。这是功能(还不完整)。

    /li>
  • 阅读有关光流的信息以及如何(从概念上)使用它来检测即将发生的碰撞。总结:如果一个物体的尺寸在增长,但朝着框架的任何边缘移动,那么它就不是碰撞路径。如果一个对象的大小在增长,但没有向任何边缘移动,那么它就在碰撞路径上。这是正确的吗?
  • 这个项目(http://se.cs.ait.ac.th/cvwiki/opencv:tutorial:optical_flow)似乎正在做我想要实现的目标。但是通过阅读代码,我不明白它是如何做到的。我无法运行它,因为我没有 linux 机器。我阅读了这个网页上的解释,它似乎到达了一个单应矩阵。这个结果如何用于避免碰撞?

除了上面提到的四点之外,我已经阅读了很多关于这个主题的内容,但仍然无法将所有部分放在一起。

这是我的问题(请记住我是新手)

  1. 光流如何用于检测即将发生的碰撞?我的意思是,假设我能够从函数 cv::calcOpticalFlowPyrLK() 中获得正确的结果,我如何从那里向前推进以检测与框架上任何对象即将发生的碰撞?是否有可能测量与我们最有可能碰撞的物体的距离?

  2. 是否有一个示例工作项目可以实现此功能或我可以查看的任何类似功能。我在 eosgarden.com 上查看了该项目,但其中似乎没有实现任何功能。

  3. 在上面的示例代码中,我将 lastCorners 转换为 UIImage 并在屏幕上显示该图像。这向我展示了一个在屏幕上只有彩色水平线的图像,与我的原始测试图像没有任何相似之处。这是该功能的正确输出吗?

  4. 我在理解这个项目中使用的数据类型时有点困难。InputArray、OutputArray 等是 OpenCV API 接受的类型。然而在 processFrame 函数中, cv::Mat 被传递给 Canny 边缘检测方法。我是否将 cv::Mat 传递给 prevImage 和 nextImage 的 calcOpticalFlowPyrLK()?

提前致谢 :)

更新:找到这个示例项目 (http://www.hatzlaha.co.il/150842/Lucas-Kanade-Detection-for-the-iPhone)。它不能在我的 mac 上编译,但我认为从这里我将有一个用于光流的工作代码。但是我仍然无法弄清楚,如何通过跟踪这些点来检测阻碍碰撞。如果你们中的任何人甚至可以回答 Qts。1号,会有很大帮助。

更新看起来像光流用于计算 FoE(扩展焦点)。可以有多个 FoE 候选人。并且使用 FoE,可以得出 TTC(碰撞时间)。后面的部分我不是很清楚。但是,到目前为止我是对的吗?OpenCV 是否实现 FoE 和/或 TTC?

0 投票
1 回答
592 浏览

ios - XCode 编译器 Apple LLVM 3.1 与 LLVM GCC 4.2

我下载了这个项目来试一试(http://www.hatzlaha.co.il/150842/Lucas-Kanade-Detection-for-the-iPhone)。它还在 AppStore 上发布了一个版本。

当我下载源代码并编译时,它给出了编译错误。我将编译器更改为 LLVM GCC,它立即编译,没有任何错误或警告。

此外,这是我所做的:

  • 在个人 iPhone 上下载了应用 Lucas Kanade。按预期运行(即显示跟踪点和视频输出)。
  • 在公司 iPad 上部署了上述编译的应用程序。这里显示了跟踪点(这意味着应用程序正在获取视频帧)但无法显示视频输出。

一般应用流程:

  • 从相机中抓取一帧。
  • 处理框架(跟踪点)。
  • 输出帧,因此屏幕看起来像显示相机馈送,正如预期的那样。

设备详情:

  • iPhone:操作系统 5.1.1 (9B206);iPhone 4;
  • iPad:操作系统 5.1 (9B176);平板电脑 2;

问题

  • 出现视频输出问题是因为操作系统版本不同还是因为使用了 GCC 编译器?
  • 如果是编译器问题,将编译错误放在这里进行解决是否合适,或者我是否需要启动一个单独的问题?

我知道这些信息可能还不够,因为有很多未知数,但相信我,深入了解应用程序的细节将是一个非常详尽的问题描述。让我知道猜测解决方案需要更多信息。我会在这里更新它。

0 投票
1 回答
2477 浏览

ios - 扩张重点

我之前问过一个问题,但没有收到任何回复。在这里,我希望进一步缩小范围,希望得到答案。

从 OpenCV 导出光流后,如何计算扩展焦点?

提前致谢 :)

0 投票
1 回答
10564 浏览

python - cv2.calcOpticalFlowPyrLK 的输入图像的数据类型错误

我正在使用 python 绑定运行 opencv 2.4.1,并且难以计算光流。

特别是这部分代码:

返回错误:

然后我尝试将图像转换为 numpy 数组:

现在我有一个新错误:

在最后的努力中,我将图像转换为 cvmat(来自 iplimage),然后再将其转换为 numpy 数组,看看会发生什么

所以现在我被困住了。以下是完整的代码供参考

0 投票
2 回答
12917 浏览

c++ - OpenCV 2.4.2 calcOpticalFlowPyrLK 找不到任何点

我在 Linux 上使用 OpenCV 2.4.2。我正在用 C++ 编写。我想跟踪简单的对象(例如白色背景上的黑色矩形)。首先,我使用 goodFeaturesToTrack,然后使用 calcOpticalFlowPyrLK 在另一个图像上找到这些点。问题是 calcOpticalFlowPyrLK 没有找到这些点。

我发现在 C 中执行此操作的代码在我的情况下不起作用:http: //dasl.mem.drexel.edu/~noahKuntz/openCVTut9.html

我已将其转换为 C++:

图片A: http ://oi50.tinypic.com/14kv05v.jpg

图片B: http ://oi46.tinypic.com/4l3xom.jpg

图片C: http ://oi47.tinypic.com/35n3uox.jpg

我发现它仅适用于 winsize = 11。我尝试在移动矩形上使用它来检查它与原点的距离。它几乎没有检测到所有四个角。

Lucas-Kanade 的 OpenCV 实现似乎无法跟踪二进制图像上的矩形。我做错了什么还是这个功能不起作用?

0 投票
1 回答
858 浏览

android - 使用光流查找相机支架和墙壁之间的距离

是否可以准确地确定墙壁与以正常速度行走的持智能卡的人之间的距离?智能手机中只有一个摄像头。可以通过光流来完成吗?我问这个是因为在谷歌搜索中我发现计算距离可能会产生误导。在此处阅读 Peter Meijer 的评论。

另外,我想知道是否有任何其他选项可以计算步行者行进的距离,因为我拥有的唯一资源是带摄像头和加速度计的智能手机。只需提及算法或提供链接就足够了。

我提供的信息:-

  1. 摄像头与墙壁的最大距离

  2. 来自 Android 加速度计的加速度以找出用户的大致速度

如果我在问我的问题时不清楚,请发表评论。

0 投票
2 回答
4778 浏览

java - Android:将 calcOpticalFlowPyrLK 与 MatOfPoint2f 一起使用

我一直无法将 calcOpticalFlowPyrLK 与 MatOfPoint2f 一起使用。我声明我的类型如下:

并使用以下内容查找和跟踪特征(我的代码基于 Robert Laganiere 的 C++ 示例光流应用程序。)

以前,变量points是类型的List<List<Point>>,我将通过实例化 MatOfPoint2ffromList并将其传递给 calcOpticalFlowPyrLK 在类型之间进行转换。

但是,我不想再这样做了,因为这种从和到列表的转换会丢失和中的点之间的对应initial关系points。我想保留这种对应关系,因此我可以通过同时迭代两个矩阵中的项目来绘制光流线。

不幸的是,现在我有以下断言失败:

奇怪的是,如果我自己添加这个断言,在调用 calcOpticalFlowPyrLK 之前,它不会失败。

我希望有人可以帮助我找出真正的问题出在哪里,以及如何保持帧之间跟踪点之间的这种关系。

编辑:我发现需要做些什么来避免这个断言错误,然后应用程序行为正确,但是:

  • 我不知道为什么
  • 我现在对 Calib3d.solvePnP 也有类似的问题,但是将 convertTo 应用于 imagePoints 和 objectPoints 并不能解决这里的问题,无论是CvType.CV_32FC2CvType.CV_32F还是CvType.CV_64F

为了在 的情况下纠正断言失败calcOpticalFlowPyrLK,我已更改points.get(0).push_back(initial);为以下内容:

所以我的问题变成了:有人可以为我解释一般情况,以便我知道如何解决我的 Calib3d.solvePnP 问题吗?

0 投票
2 回答
3222 浏览

opencv - 运动物体的光流:几个点

我正在尝试做这样的事情: http ://www.youtube.com/watch?feature=player_embedded&v=MIYt1yNwoZU

而且我走对了,它可以很好地进行 2 小时的编码。但我有一个问题:

  • 我正在使用 opencv 2.4,周围有一些选项.. 见这里。哪一个是最好的?lucas kanade 有一些自动特征检测?或者也许一个简单的全球定位就足够了?甚至卡尔曼滤波器?现在我正在使用密集的farneback算法,我认为这是第一个(=更简单)选项,但可能不是最好的。

  • 在计算图像上的光流之后(为了计算光流而缩小 2 倍,因为这是一项艰苦的工作),我取向量的平均值。正常平均值,将所有这些相加并除以向量的数量。所以在流垫上有一个嵌套的for循环。更好的方法?

    /li>
  • 我正在移动矩形,但向右/向左的移动似乎有点奇怪,相反,向上/向下的效果非常好!有人可以解释我为什么吗?

  • 翻译是好的,但我被困在旋转..如果我得到平均向量,我怎么能得到学位?我尝试过使用 X 轴的向量之间的角度,但效果不佳。一些提示?

  • 现在我正在用 opencv 绘图 api 绘制东西,但是从 2.4 开始,也有 opengl 支持.. 应该很好,但我没有找到这方面的例子..

0 投票
1 回答
1188 浏览

python - python中的openCV光流

我正在用 python 编写图像分析程序并尝试使用cv.CalcOpticalFlowFarneback. 我弄清楚了大部分事情并且分析工作,但是,我想玩一点flags参数。在 cv 文档中,它说 flags 是一个整数,描述如下:

问题是如何设置标志以使用其中一个选项或同时使用这两个选项?