1

我正在开发一个 Iphone 应用程序。

我需要执行以下操作:当用户单击“相机选项卡”时,相机会在带有圆形叠加层的视图内打开。

我想在相机上应用过滤算法。

我正在寻找最好的方法来做到这一点。有图书馆可以提供帮助吗?

我目前在做什么:

  1. 我正在使用OpenCV图书馆。
  2. 我定义了一个计时器。
  3. 对于每个计时器滴答,我cvCaptureFromCam()OpenCV 框架中调用方法(这将用相机捕获图片并返回它)。
  4. 我将算法应用于捕获的图像。
  5. 我将图像显示在UIImageView

这个想法是,在每个计时器滴答声中,我都会获取图像,对其进行过滤并将其放入UIImageView. 如果计时器滴答声足够快,它将显示为连续的。

但是cvCaptureFromCam速度有点慢,整个过程占用了太多内存。

任何更好的方法的建议都非常感谢。谢谢

4

1 回答 1

2

任何基于 CPU 密集型处理的东西,例如 OpenCV,对于当前 iOS 设备上的实时视频过滤来说可能太慢了。正如我在这个答案中所说,我强烈建议为此寻找 OpenGL ES。

正如 CSmith 所提到的,我编写了一个名为GPUImage的开源框架,用于执行这种基于 GPU 的过滤,而不必担心涉及的底层 OpenGL ES。此框架中的大多数滤镜都可以应用于 640x480 的实时视频,其帧率远高于 iOS 相机的 30 FPS 帧率。我一直在逐渐添加过滤器,目标是替换 Core Image 中存在的所有过滤器,以及 OpenCV 的大多数图像处理功能。如果我在 OpenCV 中缺少您需要的东西,请在项目的问题页面上告诉我。

构建并运行 FilterShowcase 示例应用程序以查看可用过滤器的完整列表以及它们如何在实时视频源上执行,并查看 SimplePhotoFilter 示例以了解如何应用这些过滤器来预览相机拍摄的视频和照片。

于 2012-08-07T20:20:09.440 回答