AVCaptureVideoPreviewLayer在iOS中添加叠加并捕获照片

问题描述 投票:0回答:1

最初的想法是通过AVCaptureSession启动相机流,在原始CMSampleBuffer中找到面孔,然后在AVCaptureVideoPreviewLayer上添加一些图像作为图层,然后截取屏幕截图。

完成后,后来发现UIGraphicsGetImageFromCurrentImageContext不能与AVCaptureVideoPreviewLayer一起使用,所以截屏不会解决我的目的。

因此我使用MetalMTKView来执行一些实时渲染,并且结果很好,CoreImage Filters和Metal的组合。我已经知道如何使用内置的CoreImage滤镜检测面部并改变面部的那部分,但我找不到合适的方法将图像添加到另一个图像上。

如何在背景图像中混合两个图像?我有CIImage可以使用。

ios swift avfoundation metal core-image
1个回答
2
投票

您可以将叠加层加载到CIImage中,然后使用transformed(by matrix: CGAffineTransform)将其移动到面部位置,最后使用composited(over dest: CIImage)将其混合到视频缓冲区中的CIImage上。您可能需要在不同的坐标空间之间进行一些工作。

还有许多更复杂的合成过滤器可用。查看filters类别中的CICategoryCompositeOperation

© www.soinside.com 2019 - 2024. All rights reserved.