【问题标题】:Making Blur Specific Area in CameraView with Swift?使用 Swift 在 CameraView 中模糊特定区域?
【发布时间】:2019-05-02 09:55:41
【问题描述】:

我有一个包含此屏幕链接下方的辅助项目。重要的是我想在相机视图中创建此屏幕,而不是在图片中。

我正在考虑为此与 Metal 打交道。我该如何编写此代码,任何建议将不胜感激。谢谢。

https://gofile.io/?c=Wan0H9

【问题讨论】:

  • 这个问题有点笼统。您看过 Apple 的 AVCamFilter 示例吗?它展示了如何将 Core Image 过滤器应用于实时摄像机源。从那里,只需选择正确的过滤器链(CIMaskedVariableBlur 在这里看起来是一个不错的选择)即可获得所需的效果。
  • 我认为将所有内容都保留在 GPU 上并利用 Metal 的冲动是一种很好的冲动。我认为您实际上可能需要使用 Metal 来有效地捕获和显示视频内容。我也碰巧认为有一些很好的现有高级工具(Core Image 和 MetalPerformanceShaders)可以让过滤和合成任务变得更容易一些。

标签: ios swift camera metal metalkit


【解决方案1】:

不确定这是否可行,但如果我是你,我会创建 4 个不同的视图(具有半透明模糊效果),如下图所示。

希望对你有帮助!

【讨论】:

  • 好主意,但我怎样才能用 Metal 的代码实现这个想法?这是最难的部分。
【解决方案2】:

有两个步骤: (i) 首先从基本得到完整的模糊图像

CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"];

(ii) 使用 UIGraphicsContext,您可以将模糊图像设置为背景图像,然后裁剪原始图像并覆盖模糊图像。

然后您可以从上下文中获取结果图像。 就是这样。

【讨论】:

  • 感谢您的回答,但我想在实时摄像机视图中使用它,而不是图像。有什么建议吗?
  • 是的,有第三方 GpuimageView 支持相机模糊和帧控制:(Y)
猜你喜欢
  • 1970-01-01
  • 2020-02-01
  • 2013-10-21
  • 1970-01-01
  • 2013-12-09
  • 2020-01-07
  • 2016-11-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多