在 CameraView 上应用 Live GpuImage
Posted
技术标签:
【中文标题】在 CameraView 上应用 Live GpuImage【英文标题】:Apply Live GpuImage on CameraView 【发布时间】:2013-06-12 19:21:13 【问题描述】:我目前正在开发一个应该使用 GPUImage 框架的相机滤镜应用程序。 我已经让自定义相机工作了,现在我只想在我得到的 uiview 上应用一个过滤器。所以过滤器一直在我的 UIView 上,它应该用过滤器保存图片。 如果你能帮助我,我将非常感激
【问题讨论】:
【参考方案1】:项目的主要自述文件描述了您为此所需的确切步骤:
GPUImageVideoCamera *videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack];
videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait;
GPUImageFilter *customFilter = [[GPUImageFilter alloc] initWithFragmentShaderFromFile:@"CustomShader"];
GPUImageView *filteredVideoView = [[GPUImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, viewWidth, viewHeight)];
// Add the view somewhere so it's visible
[videoCamera addTarget:customFilter];
[customFilter addTarget:filteredVideoView];
[videoCamera startCameraCapture];
首先,您创建将提取实时视频的 GPUImageCamera 实例。然后,您创建所需的任何过滤器(上述代码中的自定义过滤器)并将其附加为相机的目标。最后,您设置了一个 GPUImageView 实例,将在其中显示过滤后的相机源,并使其成为过滤器的目标。结果,视频帧将顺着管道从相机流向过滤器,再到视图。
如果您希望能够保存来自相机的照片,则需要使用 GPUImageStillCamera 而不是上面的摄像机实例。静态相机将提供来自照片相机的视频预览,并让您按需捕捉全分辨率照片。
同样,所有这些都在框架随附的文档中进行了清楚的解释(并显示在 GitHub 项目的首页上)。
【讨论】:
以上是关于在 CameraView 上应用 Live GpuImage的主要内容,如果未能解决你的问题,请参考以下文章
将 Google Cameraview 添加到项目 [关闭]
使用 CameraView 在 Android 上使用 ML Kit 检测人脸
在android中的surfaceview上创建cameraview(掩码)
PictureCallback 在“onPictureTaken”中获取字节 [] 数据,但它与我在 CameraView 中看到的图像不匹配。