如何使用iPhone的相机跟踪运动?

时间:2010-10-14 13:36:22

标签: iphone augmented-reality motion motion-detection

我看到有人制作了一款使用相机跟踪你的脚的应用程序,这样你就可以在iPhone屏幕上踢一个虚拟足球。

你怎么能这样做?有没有人知道有关使用iPhone相机检测物体并跟踪它们的任何代码示例或其他信息?

2 个答案:

答案 0 :(得分:32)

我刚在SecondConf上发表了演讲,我演示了如何使用iPhone的相机使用OpenGL ES 2.0着色器跟踪彩色对象。可以在here找到该演讲随附的帖子,包括我的幻灯片和所有演示的示例代码。

我编写的示例应用程序(其代码可以从here下载)基于Apple为在WWDC 2007上演示Core Image而生成的示例。该示例在Chapter 27 of the GPU Gems 3 book中进行了描述。

基本思想是您可以使用自定义GLSL着色器实时处理来自iPhone相机的图像,确定哪些像素与给定阈值内的目标颜色匹配。然后,这些像素将其标准化的X,Y坐标嵌入其红色和绿色分量中,而所有其他像素标记为黑色。然后对整个帧的颜色进行平均以获得彩色对象的质心,当它在相机视图中移动时可以跟踪它。

虽然这并没有解决跟踪像脚这样的更复杂对象的情况,但是应该能够编写这样的着色器,以便能够选择这样一个移动物体。

作为对上述内容的更新,在我写这篇文章后的两年里,我现在开发了an open source framework,它封装了OpenGL ES 2.0着色器处理图像和视频。最近添加的一个是GPUImageMotionDetector类,它处理场景并检测其中的任何类型的运动。它将返回它作为简单回调块的一部分检测到的整体运动的质心和强度。使用此框架执行此操作应该比滚动自己的解决方案容易得多。

答案 1 :(得分:3)

我在iPhone上使用OpenCV跟踪面部和眼睛取得了一些成功。 这是一个很好的起点:http://niw.at/articles/2009/03/14/using-opencv-on-iphone/en

我猜诀窍是找到一个描述脚的级联(描述相机应该寻找的东西),但不确定是否存在。