【问题标题】:Example iOS project using CIFilters to process video?使用 CIFilters 处理视频的示例 iOS 项目?
【发布时间】:2014-05-05 01:33:28
【问题描述】:

Core Image 过滤器的 iOS 实现包括一个过滤器类别 CICategoryVideo,可能可用于处理实时视频流。这意味着有一个工作流程足够快,可以拍摄一帧视频,对其应用一个或多个过滤器,然后将生成的帧传递给显示/保存。

有人知道一个示例项目来说明这是如何完成的吗?到目前为止,我对 CIFilters 所做的只是将 UIImage 转换为 CIImage,使用 CIFilter 对其进行处理,然后将其转换回 UIImage 进行显示。

我假设要在视频处理流中使用 CI 过滤器,您必须使用 Core Video pixelBuffers,将它们映射到 CIImages,处理它们,然后将结果映射回像素缓冲区。我已经使用 OpenGL 完成了这种类型的处理,甚至已经将视频帧转换为 CIImages 以在视频流中进行人脸检测,但不知道如何将 CIFilter 的输出足够快地返回到 pixelBuffer 以跟上视频的帧率。

【问题讨论】:

  • 如果你想要实时性能,我建议使用 GPUImage 而不是 CIFilters。根据我的经验,从一个切换到另一个很容易
  • 我已经完成了基于 OpenGL 的图像处理,例如 GPUImage,我是否正在尝试了解 CIFilters 及其功能。
  • 在这种情况下,您将严重缺乏性能;)。将 CIImage 返回到 pixelBuffer 的官方方法是使用 CIContext 进行渲染。我不确定是否有任何其他方法可以提供更好的性能

标签: ios objective-c cifilter


【解决方案1】:

这个项目完全符合您的描述, 使用 CICategoryVideo:

https://developer.apple.com/library/content/samplecode/CIFunHouse/Introduction/Intro.html

CIFunHouse 项目展示了如何将 Core Image 内置和自定义 CIFilter 应用于照片和视频。该应用程序提供了用于添加照片和视频源、从列表中选择 CIFilters 以及对过滤器参数进行实时调整的视图控制器。该项目还包含用于效果的自定义 CIFilter 子类的代码,例如 Sobel 边缘检测、旧式胶片和假景深外观。该代码还演示了如何将过滤后的视频流保存到 ALAssetsLibrary,同时在显示器上预览视频。

抱歉,答案迟到了 3 年。

【讨论】:

    猜你喜欢
    • 2016-09-21
    • 2020-02-16
    • 2011-06-27
    • 1970-01-01
    • 2020-08-27
    • 2017-04-07
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多