我正在进行一个项目,在这个项目中,我需要使用OpenCV实现冲突避免。这是在iOS上完成的(iOS 5和更高版本就可以了)。
项目目标:这个想法是在汽车仪表板上安装一个iPad并启动应用程序。应用程序应该从相机抓取框架并处理这些帧,以检测汽车是否会与任何障碍物相撞。
我是任何一种图像处理的新手,因此在这个项目中我陷入了概念层面。
我到目前为止所做的事:
除了上面提到的四点之外,我已经读了很多关于这个话题的文章,但是仍然不能把所有的部分放在一起。
这是我的问题(请记住我是个新手)
(预先谢谢:)
更新:找到了这个示例项目(http://www.hatzlaha.co.il/150842/Lucas-Kanade-Detection-for-the-iPhone)。它不是在我的mac上编译的,但是我想从这里我将有一个光流的工作代码。但我还是搞不清楚,如何才能从追踪这些点中发现阻碍碰撞的因素。如果你们中有人能回答Qts的话。第一,这会有很大的帮助。
更新看起来光流是用来计算FoE (扩展焦点)的。可以有多个FoE候选人。并利用FoE实现了TTC (时间到碰撞)。我对后半部分不太清楚。但是,到目前为止,我是正确的吗? OpenCV实现FoE和/或TTC?吗?
发布于 2012-07-27 23:36:56
1
光流是如何用来探测即将发生的碰撞的?
我从未使用过光流,但谷歌的第一次请求给了我这篇文章:
基于光流的障碍物检测
我不知道你是否读过了。它显示了如何估计时间接触的每一个角度。
2
这显示了一个图像,它只在屏幕上有彩色的水平线,与我最初的测试图像没有任何相似之处。
我认为goodFeaturesToTrack的输出不是图像,而是点表。例如,请参见如何在Python示例中使用它们 (在OpenCV的旧版本中)。这可能也适用于calcOpticalFlowPyrLK的输出。先看看调试中有什么。我通常使用Python + OpenCV来理解不熟悉的OpenCV函数的输出。
4.
我很难理解这个项目中使用的数据类型。InputArray、OutputArray等是OpenCV API所接受的类型。然而在processFrame函数中,cv::Mat被传递给Canny边缘检测方法。我是否将cv::Mat传递给calcOpticalFlowPyrLK()用于prevImage和nextImage?
来自文档
这是将只读输入数组传递到OpenCV函数的代理类。……
_InputArray是一个可以由Mat、Mat_<T>、Matx<T, m, n>、std::vector<T>、std::vector<std::vector<T> >或std::vector<Mat>构造的类。它也可以由矩阵表达式构造。
这样你就可以通过Mat了。一些较老的函数仍然只期望Mat。
https://stackoverflow.com/questions/11553861
复制相似问题