为相机的每个帧应用滤镜算法

时间:2012-08-06 12:19:01

标签: iphone objective-c ios image-processing camera

我正在开发Iphone应用程序。

我需要执行以下操作:当用户点击“相机标签”时,相机会在视图内打开圆圈覆盖。

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

我正在寻找最佳方法。有没有可以提供帮助的图书馆?

我目前在做什么:

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

    我的想法是,在每个计时器刻度线上,我得到图像,过滤它并将其放入UIImageView。如果计时器滴答足够快,它将显示为连续。

    然而cvCaptureFromCam有点慢,整个过程占用了太多内存。

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

1 个答案:

答案 0 :(得分:2)

任何基于CPU限制处理的东西,例如OpenCV,对于当前iOS设备上的实时视频过滤来说可能太慢了。正如我在this answer中所述,我强烈建议您使用OpenGL ES。

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

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