在实时摄影机预览上应用自定义摄影机过滤器-Swift

在实时摄影机预览上应用自定义摄影机过滤器-Swift,swift,camera,avfoundation,core-image,arkit,Swift,Camera,Avfoundation,Core Image,Arkit,我希望在Swift 3/4中制作一个原生iPhone iOS应用程序,它使用背面摄像头的实时预览,并允许用户应用内置摄像头应用程序中的过滤器。我的想法是通过调整色调/RGB/亮度级别等来创建自己的过滤器。最终我想创建一个色调滑块,允许用户在实时预览中过滤特定颜色 我遇到的关于类似问题的所有答案都是在两年前发布的,我甚至不确定它们是否为我提供了我正在寻找的相关、最新的解决方案 我不希望拍一张照片,然后再应用过滤器。我正在寻找与本机相机应用程序相同的功能。在看到相机预览时实时应用过滤器 如何创建此功

我希望在Swift 3/4中制作一个原生iPhone iOS应用程序,它使用背面摄像头的实时预览,并允许用户应用内置摄像头应用程序中的过滤器。我的想法是通过调整色调/RGB/亮度级别等来创建自己的过滤器。最终我想创建一个色调滑块,允许用户在实时预览中过滤特定颜色

我遇到的关于类似问题的所有答案都是在两年前发布的,我甚至不确定它们是否为我提供了我正在寻找的相关、最新的解决方案

我不希望拍一张照片,然后再应用过滤器。我正在寻找与本机相机应用程序相同的功能。在看到相机预览时实时应用过滤器


如何创建此功能?使用AVFoundation可以实现这一点吗?阿夫基特?这一功能是否可以通过ARKit实现

是的,您可以通过使用AVFoundation捕获系统捕获视频,并使用自己的渲染器处理和显示视频帧,将图像过滤器应用到相机提要

苹果公司有一个名为的示例代码项目,它就是这样做的,并展示了多种处理方法,使用金属或核心图像。重点是:

  • 使用
    AVCaptureVideoDataOutput
    获取实时视频帧
  • 使用
    CVMetalTextureCache
    CVPixelBufferPool
    获取您喜爱的渲染技术可以访问的视频像素缓冲区
  • 在渲染过程中,使用金属材质(或OpenGL或其他材质)和金属着色器或核心图像过滤器绘制纹理,以便在CPU上进行像素处理

  • 顺便说一句,如果你想做的只是将图像处理应用于相机馈送,那就太过分了。ARKit适用于您想了解相机与现实空间的关系时,主要用于绘制真实世界中的3D内容。

    在AVFoundation中,您是否尝试过使用AVCaptureVideoDataOutputSampleBufferDelegate截取输出缓冲区,然后使用CIImage类。我自己也没有尝试过,但我会从这里开始。这可能会对@Spads有所帮助,谢谢你的评论。事实上,我只是在遵循同样的例子。我已经使用AVFoundation创建了一个应用程序来显示背面摄像头输出,下一步将考虑应用过滤器,但我不确定具体的应用efficiency@Boris:你最终是怎么做到的?你的方法是什么?你有没有这样的例子?是的-答案中链接的苹果示例代码AVCamPhotoFilter。谢谢。我来看看AVCamPhotoFilter。事实上,我想实现这样的目标:。如果你对我有任何建议,我将不胜感激。