【问题标题】:Invert the color of an AVCaptureSession反转 AVCaptureSession 的颜色
【发布时间】:2014-02-01 15:49:01
【问题描述】:

我希望在使用相机时在我的应用中反转屏幕颜色。但是,我不知道 (1) 是否有可能,以及 (2) 如果可以,该怎么做。

谢谢!

【问题讨论】:

  • 我的想法是你可以用一个倒置的视图覆盖实时预览视图。然后对图像进行后期处理以匹配。我确实发布了答案,但已将其删除,因为它没有经过深思熟虑,因此很有帮助。但我想把这个想法留在这里。
  • 我发现这个链接可能有用:weblog.invasivecode.com/post/23153661857/… 来自页面的引用 [我们需要构建自定义相机预览。如果我们想处理视频缓冲区并实时显示结果,我们不能使用本文中所示的 AVCaptureVideoPreviewLayer,因为该相机预览直接渲染信号并且在渲染之前不提供任何处理它的方法。为此,您需要获取视频缓冲区,对其进行处理,然后在自定义 CALayer 上进行渲染。让我们看看如何做到这一点]

标签: ios objective-c


【解决方案1】:

您可以使用 Core Image 来执行此操作,也可以使用 Brad Larson 的出色框架 GPUImage

为了轻松做很多视频效果,该框架包含很多例子看看。

【讨论】:

  • 在这种情况下我会选择 GPUImage,因为它似乎要快得多,并且更容易与 AVCaptureSession 一起使用。
  • 特别是,您需要 GPUImageColorInvertFilter 此处。如果您将 GPUImageVideoCamera 输入其中,然后将结果发送到 GPUImageView,您将在现场视频中获得正确的结果。请参阅 FilterShowcase 示例以观察这一点。
【解决方案2】:

好吧,您可以尝试使用Core Image,它有一个名为CIColorInvert 的过滤器。我不确定它是否适用于相机,但值得一试。这里有一些链接,您可能会觉得有帮助:

除此之外,看看this answer

希望这会有所帮助!

【讨论】:

  • 谢谢!拍完照片后应用它会很棒。但是,由于应用程序的需要,我需要在使用相机时实时完成,在这种情况下我不知道如何应用 Core Image,但是谢谢!
  • 我已经为我的答案添加了另一个链接,它似乎很有用。
  • 一些过滤器可以附加到视频源。看起来 CIColorInvert 就是其中之一。 (如果您查看该过滤器的文档,它会说它是 CICategoryVideo 或视频过滤器的成员)
  • 可悲的是NSArray *filters = [[NSArray alloc] initWithObjects:[CIFilter filterWithName:@"CIColorInvert"], nil]; [captureLayer setFilters:filters]; 没有效果。这意味着我应该使用 GPUImage 框架,否则我忘记了什么。
猜你喜欢
  • 2011-06-08
  • 2013-07-24
  • 1970-01-01
  • 1970-01-01
  • 2012-11-27
  • 2018-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多