GPUImageFilter就是用来接收源图像,通过自定义的顶点、片元着色器来渲染新的图像,并在绘制完成后通知响应链的下一个对象。 GPUImageFramebuffer就是用来管理纹理缓存的格式与读写帧缓存的buffer。 这一篇介绍的是GPUImageVideoCamera和GPUImageView。 GPUImageVideoCamera GPUImageVideoCamera是GPUImageOutput的子类,提供来...
1、GPUImageVideoCamera捕获摄像头图像 调用newFrameReadyAtTime: atIndex:通知GPUImageBeautifyFilter; 2、GPUImageBeautifyFilter调用newFrameReadyAtTime: atIndex:通知GPUImageBilateralFliter输入纹理已经准备好; 3、GPUImageBilateralFliter绘制图像后在informTargetsAboutNewFrameAtTime(), 调用setInputFramebufferForTarget:...
#import"GPUImageSepiaFilter.h"//褐色(怀旧) #import"GPUImageLevelsFilter.h"//色阶 #import"GPUImageGrayscaleFilter.h"//灰度 #import"GPUImageHistogramFilter.h"//色彩直方图,显示在图片上 #import"GPUImageHistogramGenerator.h"//色彩直方图 #import"GPUImageRGBFilter.h"//RGB #import"GPUImageToneCurveFi...
GPUImage的filter:GPUImageFilter类或者子类,这个类继承自GPUImageOutput,遵循GPUImageInput协议,既可以流进数据,又可以流出GPUImage的final target: GPUImageView,GPUImageMovieWriter最终输入目标,显示图片或者视频。 解析 GPUImageVideoCamera GPUImageVideoCamera是GPUImageOutput的子类,提供来自摄像头的图像数据作为源数据,...
GPUImage使用有三个关键点,input, output, filter(filter也是output但主要实现了滤镜,所以分开说)。output一般是用来承载图像内容输出,可以是GPUImageUIElement(通过UIView来创建并承载整个UIView的内容), GPUImagePicture(使用UIImage或者CGImage之类的图像来创建);filter就是所使用的滤镜,可以使用GPUImage自带的比如GPU...
GPUImageVideoCamera是GPUImageOutput的子类,提供来自摄像头的图像数据作为源数据,一般是响应链的源头。 GPUImageView是响应链的终点,一般用于显示GPUImage的图像。 琨君的基于GPUImage的实时美颜滤镜对GPUImage实现美颜滤镜的原理和思路做了详细介绍。 本文以琨君的代码为demo,结合前两篇解析,探究美颜过程中的GPUImage实...
1.导入GPUImage两种方式 a.使用 cocopods导入 platform :ios, '9.0' target 'GPUImageDemo' do pod 'GPUImage' end 1. 2. 3. 4. 注:给项目添加cocopods等操作在此不做多余赘述 b.手动导入 (1).首先下载GPUImage,下载地址 ...
GPUImageFilter就是用来接收源图像,通过自定义的顶点、片元着色器来渲染新的图像,并在绘制完成后通知响应链的下一个对象。 GPUImageFramebuffer就是用来管理纹理缓存的格式与读写帧缓存的buffer。 这一篇介绍的是GPUImageVideoCamera和GPUImageView。 GPUImageVideoCamera ...
GPUImage概要 在GPUImage 中既有对图像进行处理的,也有对相机内容进行处理的,这里主要以相机处理为例进行分析。 大致会分为三个部分: 相机数据的采集 OpenGL 对图像的处理与显示 相机的拍摄 相机数据采集 相机数据采集实际上就是把相机的图像数据转换成 OpenGL 中的纹理。
GPUImageFilterPipeline类是滤镜通道,把inputs的滤镜组合起来,然后添加output为最后的输出目标。核心代码如下: filters为输入的滤镜,output为输出目标; 把filters的滤镜按照链表的形式串联起来。 -(void)_refreshFilters{id prevFilter=self.input;GPUImageOutput<GPUImageInput>*theFilter=nil;for(inti=0;i<[self.filte...