在 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 检测人脸

CameraView 中的人像模式

在android中的surfaceview上创建cameraview(掩码)

PictureCallback 在“onPictureTaken”中获取字节 [] 数据,但它与我在 CameraView 中看到的图像不匹配。

Android ViewPager,片段中的cameraview未显示