反转AVCaptureSession的颜色

3

我想在使用摄像头时反转我的应用程序屏幕的颜色。然而,我不知道是否有可能以及如果可能的话该如何实现。

谢谢!


我的想法是,您可以在实时预览视图上叠加一个反转的视图。然后对图像进行后处理以匹配。我曾经发布过一个答案,但由于思考不够充分而没有帮助,因此已将其删除。但我想在这里留下这个想法。 - markhunte
我找到了这个链接,可能会有用:http://weblog.invasivecode.com/post/23153661857/a-quasi-real-time-video-processing-on-ios-in。引用页面上的内容:[我们需要构建一个自定义相机预览。如果我们想要处理视频缓冲区并实时显示结果,则不能像本文中所示那样使用AVCaptureVideoPreviewLayer,因为该相机预览直接呈现信号,并且在呈现之前不提供任何处理方式。要使此成为可能,您需要获取视频缓冲区,对其进行处理,然后将其呈现在自定义CALayer上。让我们看看如何做到这一点]。 - markhunte
2个回答

1
你可以使用Core Image来实现这个,或者你可以使用Brad Larson的优秀框架GPUImage来轻松实现许多视频效果,该框架包括许多示例,请查看。

在这种情况下,我会选择GPUImage,因为它似乎更快,并且与AVCaptureSession一起使用更容易。 - Garoal
特别是在这里,您想要使用GPUImageColorInvertFilter。如果您将GPUImageVideoCamera输入该滤镜,然后将结果发送到GPUImageView,则可以在实时视频中获得正确的结果。请参考FilterShowcase示例以观察此过程。 - Brad Larson

0

1
谢谢!如果能在拍照后应用这个功能就太好了。但是,由于应用的需要,我需要在使用相机时实时完成操作,而我不知道如何在这种情况下应用核心图像技术,但还是谢谢! - user1553136
我在我的答案中添加了另一个链接,它似乎非常有用。 - etolstoy
一些过滤器可以附加到视频源上。看起来CIColorInvert是其中之一。(如果您在文档中查找该过滤器,则会发现它是CICategoryVideo或视频过滤器的成员)。 - Duncan C
遗憾的是 NSArray *filters = [[NSArray alloc] initWithObjects:[CIFilter filterWithName:@"CIColorInvert"], nil]; [captureLayer setFilters:filters]; 没有效果。这意味着我应该使用 GPUImage 框架,或者是我忘记了什么。 - user1553136

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接