- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在开展一个项目,我需要使用 OpenCV 实现碰撞避免。这将在 iOS 上完成(iOS 5 及更高版本都可以)。
项目目标:这个想法是在汽车的仪表盘上安装一个 iPad 并启动应用程序。应用程序应从相机抓取帧并处理这些帧以检测汽车是否会与任何障碍物发生碰撞。
我对任何类型的图像处理都是新手,因此我在这个项目中陷入了概念层面。
到目前为止我做了什么:
以此项目为起点:http://aptogo.co.uk/2011/09/opencv-framework-for-ios/它在我的 iPad 上成功运行,并且捕捉功能也能正常工作,这意味着相机捕捉功能得到了很好的集成。我更改了 processFrame 实现以尝试光流而不是 Canny 边缘检测。这是功能(尚未完成)。
-(void)processFrame {
int currSliderVal = self.lowSlider.value;
if(_prevSliderVal == currSliderVal) return;
cv::Mat grayFramePrev, grayFrameLast, prevCorners, lastCorners, status, err;
// Convert captured frame to grayscale for _prevFrame
cv::cvtColor(_prevFrame, grayFramePrev, cv::COLOR_RGB2GRAY);
cv::goodFeaturesToTrack(grayFramePrev, prevCorners, 500, 0.01, 10);
// Convert captured frame to grayscale for _lastFrame
cv::cvtColor(_lastFrame, grayFrameLast, cv::COLOR_RGB2GRAY);
cv::goodFeaturesToTrack(grayFrameLast, lastCorners, 500, 0.01, 10);
cv::calcOpticalFlowPyrLK(_prevFrame, _lastFrame, prevCorners, lastCorners, status, err);
self.imageView.image = [UIImage imageWithCVMat:lastCorners];
_prevSliderVal = self.lowSlider.value;
}
除了上面提到的四点之外,我已经阅读了很多关于这个主题的内容,但仍然无法将所有部分放在一起。
这是我的问题(请记住我是新手)
光流如何用于检测即将发生的碰撞?我的意思是,假设我能够从函数 cv::calcOpticalFlowPyrLK() 获得正确的结果,我如何从那里向前推进以检测与框架上任何物体即将发生的碰撞?是否可以测量与我们最有可能碰撞的物体的距离?
是否有一个示例工作项目可以实现此功能或我可以查看的任何类似功能。我在 eosgarden.com 上查看了该项目,但其中似乎没有实现任何功能。
在上面的示例代码中,我将 lastCorners 转换为 UIImage 并在屏幕上显示该图像。这向我展示了一张屏幕上只有彩色水平线的图像,与我的原始测试图像完全不同。这是该函数的正确输出吗?
我在理解这个项目中使用的数据类型时遇到一点困难。 InputArray、OutputArray 等是 OpenCV API 接受的类型。然而在 processFrame 函数中,cv::Mat 被传递给 Canny 边缘检测方法。我是否将 cv::Mat 传递给 calcOpticalFlowPyrLK() 以获得 prevImage 和 nextImage?
提前致谢:)
更新:找到这个示例项目 (http://www.hatzlaha.co.il/150842/Lucas-Kanade-Detection-for-the-iPhone)。它不能在我的 mac 上编译,但我认为从这里我会有一个光流的工作代码。但我仍然无法弄清楚,如何通过跟踪这些点来检测阻碍碰撞。如果你们中有人甚至可以回答 Qts。 1号,会有很大的帮助。
更新 貌似光流是用来计算FoE(Focus of Expansion)的。可以有多个 FoE 候选者。并使用 FoE 得出 TTC(碰撞时间)。后半部分我不是很清楚。但是,到目前为止我是正确的吗? OpenCV 是否实现了 FoE 和/或 TTC?
最佳答案
HOW is optical flow used to detect impending collision?
我从来没有用过光流,但是第一个谷歌请求给了我这篇论文:
Obstacle Detection using Optical Flow
不知道你有没有看过。它展示了如何估算各个角度的接触时间。
This shows me an image which only has colored horizontal lines on the screen, nothing similar to my original test image.
我假设 goodFeaturesToTrack 的输出不是图像,而是点表。参见,例如,how they are used in a Python example (在旧版本的 OpenCV 中)。这同样适用于 calcOpticalFlowPyrLK 的输出。先看看调试里有什么。我通常使用 Python + OpenCV 来了解不熟悉的 OpenCV 函数的输出。
I'm having a little difficulty understanding the datatypes used in this project. InputArray, OutputArray etc are the types accepted by OpenCV APIs. Yet in processFrame function, cv::Mat was being passed to Canny edge detection method. Do I pass cv::Mat to calcOpticalFlowPyrLK() for prevImage and nextImage?
来自documentation :
This is the proxy class for passing read-only input arrays into OpenCV functions. ....
_InputArray
is a class that can be constructed fromMat
,Mat_<T>
,Matx<T, m, n>
,std::vector<T>
,std::vector<std::vector<T> >
orstd::vector<Mat>
. It can also be constructed from a matrix expression.
所以你可以通过Mat
.一些较旧的函数仍然需要 only Mat
.
关于ios - 在 iPad 上使用 OpenCV 避免碰撞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11553861/
我正在用 jQuery Collision 编写这个游戏,它使用键盘按键来移动 div,当一个 div 接触另一个 div 时,它应该防止重叠。 我到底该怎么做? HTML ----
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: Java 2D Collision? 嘿,大家好,我有另一篇关于这个问题的帖子刚刚消失了,所以我想我会尝试得到一些关
嘿伙计们,我正在制作一个 2D java 游戏,我正在尝试找出如何制作一个好的碰撞代码。我目前正在使用以下代码: public void checkCollision() { Rect
我的意思是,当我与实体的侧面碰撞并想要跳跃时,我无法向右/向左移动,因为当我与右侧/左侧的实体碰撞时,我有一个标志可以防止这种情况发生,例如所以: 这是我用来检测碰撞的代码: public void
所以我正在运行 collide_mask 检查,以删除与玩家 Sprite 碰撞时的生物实例。它工作得很好。 pygame.sprite.spritecollide(player, mobs, Tru
我正在研究我的砖 block splinter 机,并制作一个适当的碰撞系统,以便使球逻辑地切换方向,我必须检测球与砖 block 的哪一侧碰撞。这是我当前的脚本: int sprite_collid
我做了一个类似颜色切换的游戏。唯一的问题是玩家与每种颜色发生碰撞...... 这是我从github上获取的代码: https://github.com/prometheon/MLNimbleNinja
测试我的游戏,当用户和怪物发生碰撞时,我希望弹出警报但没有成功: function die() { for (var i = 0; i < monster.length; i++) { i
我对 vector 很陌生,这是我第一次真正使用它们进行碰撞检查。这是我的项目,我对如何实现碰撞感到困惑。我目前的碰撞检查和响应代码似乎是……糟糕的设计。 这是我的代码: for(auto it =
我是 javascript 的新手,正在尝试找出如何与球和木板发生碰撞,这将停止游戏并提醒玩家“你输了”。但我只想让红球击中木板,让蓝球不接触地继续前进。这是我正在处理的代码。 (我不介意你是否可以帮
很抱歉提出奇怪的问题,我还是 Android 编程的新手。 我有以下代码: import android.content.DialogInterface.OnClickListener; import
我有 6 个 UIImageView,每个都连接到 UIPanGestureRecognizer,它们都连接到相同的方法。方法是: - (IBAction)handlePan:(UIPanGestur
我想根据某些对象的轴对齐边界框检查视锥体,以粗略检查这些对象是否在视野中。速度不是什么大问题。 最佳答案 我发现构建视锥体的世界空间模型并检查与它的 bbox 碰撞是错误的方法。 一个更简单的方法是以
我项目中的所有这些代码都运行良好,但我遇到了一些问题。当飞机接触到屏幕的边界时,它会在接触后开始旋转。我不知道如何让它在碰到屏幕边界时不旋转。只有在我使用时才会出现这个问题: plane.physic
在应用程序启动时,我在后台线程中删除旧的 CoreData 行,下面是我的代码。我的问题类似于城市街道问题。所以,我有两个实体,Street 和 City,我有一个关系 City > Street,因
我试图不接触穴居人和其他带有碰撞位掩码的图像,但我的穴居人击中了一切。 func addCaveManBitMasks(){ caveManNode.physicsBody?.category
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
如何在 PyGame 中找到字符和图像之间的碰撞?我已经从图像中绘制了一个玩家,并从瓷砖中绘制了墙壁,那么我如何检测这些碰撞? 最佳答案 如果你使用pygame Rect类来表示对象的边界,您可以使用
我正在使用 ftok() 为 C 应用程序使用的共享内存段生成标识符。我有问题,在一个盒子上我与 root 使用的标识符发生冲突。在这种情况下,我可以通过破解代码来修复它,但我想要一个更强大的解决方案
这个问题在这里已经有了答案: JavaScript: Collision detection (10 个回答) 10 个月前关闭。 检测 2 个物体(墙壁)碰撞的好方法。是的,不仅仅是检测,还有进一步
我是一名优秀的程序员,十分优秀!