美文网首页将来跳槽用
GPUImage入门使用

GPUImage入门使用

作者: bugLife丶 | 来源:发表于2020-07-29 15:08 被阅读0次

              近几年,随着直播、小视频的崛起,对视频图片滤镜处理要求也越来越高了。对做滤镜我们首先想到就是OpenGL了,而且这个是跨平台的,使用的GPU处理图片和进行复杂的计算,优于以前的CPU去处理。当然咱们苹果也有OpenGL ES,这个是用于苹果开发,底层是一些C的Api,敢兴趣的可以深层次研究,这里我们说一说GPUImage,这个是开源的,底层就是OpenGL。

    那我们就入门的使用一下,下面是代码:

        //创建一个原始图片

        UIImageView *imageview = [[UIImageView alloc]init];

        imageview.frame=CGRectMake(0,0,250,300);

        imageview.image= [UIImage imageNamed:@"timg.jpg"];

        [self.view addSubview:imageview];

      //创建一种滤镜类型(素描)

        GPUImageSketchFilter *vignetteFileter = [[GPUImageSketchFilter alloc]init];

      //设置渲染的区域,这里设置为图片的区域

        [vignetteFileter  forceProcessingAtSize:imageview.bounds.size];

        [vignetteFileter  useNextFrameForImageCapture];

     //将图片数据给 GPUImagePicture 

        GPUImagePicture    *imagePicture = [[GPUImagePicture  alloc]initWithImage: [UIImage   imageNamed:@"timg.jpg"]];

      //给GPUImagePicture 添加渲染类型(GPUImageSketchFilter 素描)

        [imagePicture  addTarget:vignetteFileter];

      //开始渲染图片

        [imagePicture  processImage];

        //素描

        UIImageView*SketchImage = [[UIImageViewalloc]init];

        SketchImage.frame=CGRectMake(0,350,100,200);

        SketchImage.image= [UIImageimageNamed:@"timg.jpg"];

        [self.viewaddSubview:SketchImage];

        SketchImage.image= [vignetteFileterimageFromCurrentFramebuffer];

    这就是素描和怀旧2种效果图,怀旧代码同理没有上:

    这里是各种滤镜效果类型:

    // #import"GPUImageFilter.h"

    #import"GPUImageTwoInputFilter.h"

    #import"GPUImagePixellateFilter.h"//像素化

    #import"GPUImagePixellatePositionFilter.h"

    #import"GPUImageSepiaFilter.h"// 褐色(怀旧)

    #import"GPUImageColorInvertFilter.h"// 反色

    #import"GPUImageSaturationFilter.h"// 饱和度

    #import"GPUImageContrastFilter.h"// 对比度

    #import"GPUImageExposureFilter.h"// 曝光

    #import"GPUImageBrightnessFilter.h"// 亮度 

    #import"GPUImageLevelsFilter.h"// 色阶

    #import"GPUImageSharpenFilter.h"//锐化

    #import"GPUImageGammaFilter.h"//gamma:要应用的灰度调整(0.0 - 3.0,默认为1.0)#import"GPUImageSobelEdgeDetectionFilter.h"//Sobel边缘检测算法(白边,黑内容,有点漫画的反色效果)

    #import"GPUImageSketchFilter.h"//素描

    #import"GPUImageToonFilter.h"//卡通效果(黑色粗线描边)#import"GPUImageSmoothToonFilter.h"//相比上面的效果更细腻,上面是粗旷的画风#import"GPUImageMultiplyBlendFilter.h"//通常用于创建阴影和深度效果#import"GPUImageDissolveBlendFilter.h"//溶解

    #import"GPUImageKuwaharaFilter.h"//桑原(Kuwahara)滤波,水粉画的模糊效果;处理时间比较长,慎用

    #import"GPUImageKuwaharaRadius3Filter.h"

    #import"GPUImageVignetteFilter.h"//晕影,形成黑色圆形边缘,突出中间图像的效果#import"GPUImageGaussianBlurFilter.h"//高斯模糊#import"GPUImageGaussianBlurPositionFilter.h"

    #import"GPUImageGaussianSelectiveBlurFilter.h"//高斯模糊,选择部分清晰#import"GPUImageOverlayBlendFilter.h"//叠加,通常用于创建阴影效果#import"GPUImageDarkenBlendFilter.h"//加深混合,通常用于重叠类型#import"GPUImageLightenBlendFilter.h"//减淡混合,通常用于重叠类型#import"GPUImageSwirlFilter.h"//漩涡,中间形成卷曲的画面#import"GPUImageSourceOverBlendFilter.h"//源混合

    #import"GPUImageColorBurnBlendFilter.h"//色彩加深混合#import"GPUImageColorDodgeBlendFilter.h"//色彩减淡混合#import"GPUImageScreenBlendFilter.h"//屏幕包裹,通常用于创建亮点和镜头眩光#import"GPUImageExclusionBlendFilter.h"//排除混合

    #import"GPUImageDifferenceBlendFilter.h"//差异混合,通常用于创建更多变动的颜色#import"GPUImageSubtractBlendFilter.h"//差值混合,通常用于创建两个图像之间的动画变暗模糊效果#import"GPUImageHardLightBlendFilter.h"//强光混合,通常用于创建阴影效果#import"GPUImageSoftLightBlendFilter.h"//柔光混合

    #import"GPUImageColorBlendFilter.h"

    #import"GPUImageHueBlendFilter.h"

    #import"GPUImageSaturationBlendFilter.h"

    #import"GPUImageLuminosityBlendFilter.h"

    #import"GPUImageCropFilter.h"//剪裁

    #import"GPUImageGrayscaleFilter.h"// 灰度

    #import"GPUImageTransformFilter.h"//形状变化

    #import"GPUImageChromaKeyBlendFilter.h"//色度键混合

    #import"GPUImageHazeFilter.h"//朦胧加暗

    #import"GPUImageLuminanceThresholdFilter.h"//亮度阈

    #import"GPUImagePosterizeFilter.h"//色调分离,形成噪点效果#import"GPUImageBoxBlurFilter.h"//盒状模糊

    #import"GPUImageAdaptiveThresholdFilter.h"//自适应阈值#import"GPUImageUnsharpMaskFilter.h"

    #import"GPUImageBulgeDistortionFilter.h"//凸起失真,鱼眼效果#import"GPUImagePinchDistortionFilter.h"//收缩失真,凹面镜#import"GPUImageCrosshatchFilter.h"//交叉线阴影,形成黑白网状画面#import"GPUImageCGAColorspaceFilter.h"//CGA色彩滤镜,形成黑、浅蓝、紫色块的画面#import"GPUImagePolarPixellateFilter.h"//同心圆像素化#import"GPUImageStretchDistortionFilter.h"//伸展失真,哈哈镜#import"GPUImagePerlinNoiseFilter.h"//柏林噪点,花边噪点#import"GPUImageJFAVoronoiFilter.h"

    #import"GPUImageVoronoiConsumerFilter.h"

    #import"GPUImageMosaicFilter.h"//黑白马赛克

    #import"GPUImageTiltShiftFilter.h"//条纹模糊,中间清晰,上下两端模糊#import"GPUImage3x3ConvolutionFilter.h"//3x3卷积,高亮大色块变黑,加亮边缘、线条等#import"GPUImageEmbossFilter.h"//浮雕效果,带有点3d的感觉#import"GPUImageCannyEdgeDetectionFilter.h"//Canny边缘检测算法#import"GPUImageThresholdEdgeDetectionFilter.h"//阈值边缘检测(效果与上差别不大)#import"GPUImageMaskFilter.h"//遮罩混合

    #import"GPUImageHistogramFilter.h"// 色彩直方图,显示在图片上#import"GPUImageHistogramGenerator.h"// 色彩直方图#import"GPUImageHistogramEqualizationFilter.h"

    #import"GPUImagePrewittEdgeDetectionFilter.h"//普瑞维特(Prewitt)边缘检测(效果与Sobel差不多,貌似更平滑)

    #import"GPUImageXYDerivativeFilter.h"//XYDerivative边缘检测,画面以蓝色为主,绿色为边缘,带彩色

    #import"GPUImageHarrisCornerDetectionFilter.h"//Harris角点检测,会有绿色小十字显示在图片角点处

    #import"GPUImageAlphaBlendFilter.h"//透明混合,通常用于在背景上应用前景的透明度#import"GPUImageNormalBlendFilter.h"//正常#import"GPUImageNonMaximumSuppressionFilter.h"//非最大抑制,只显示亮度最高的像素,其他为黑

    #import"GPUImageRGBFilter.h"// RGB

    #import"GPUImageMedianFilter.h"//中间值,有种稍微模糊边缘的效果

    #import"GPUImageBilateralFilter.h"//双边模糊

    #import"GPUImageCrosshairGenerator.h"//十字

    #import"GPUImageToneCurveFilter.h"// 色调曲线#import"GPUImageNobleCornerDetectionFilter.h"//Noble角点检测,检测点更多#import"GPUImageShiTomasiFeatureDetectionFilter.h"//ShiTomasi角点检测,与上差别不大#import"GPUImageErosionFilter.h"//侵蚀边缘模糊,变黑白#import"GPUImageRGBErosionFilter.h"//RGB侵蚀边缘模糊,有色彩#import"GPUImageDilationFilter.h"//扩展边缘模糊,变黑白#import"GPUImageRGBDilationFilter.h"//RGB扩展边缘模糊,有色彩#import"GPUImageOpeningFilter.h"//黑白色调模糊

    #import"GPUImageRGBOpeningFilter.h"//RGB扩展边缘模糊,有色彩#import"GPUImageClosingFilter.h"//黑白色调模糊,暗色会被提亮#import"GPUImageRGBClosingFilter.h"//彩色模糊,暗色会被提亮#import"GPUImageColorPackingFilter.h"//色彩丢失,模糊(类似监控摄像效果)#import"GPUImageSphereRefractionFilter.h"//球形折射,图形倒立#import"GPUImageMonochromeFilter.h"// 单色

    #import"GPUImageOpacityFilter.h"// 不透明度

    #import"GPUImageHighlightShadowFilter.h"// 提亮阴影

    #import"GPUImageFalseColorFilter.h"// 色彩替换(替换亮部和暗部色彩)#import"GPUImageHSBFilter.h"

    #import"GPUImageHueFilter.h"//色度

    #import"GPUImageGlassSphereFilter.h"//水晶球效果

    #import"GPUImageLookupFilter.h"//lookup 色彩调整

    #import"GPUImageAmatorkaFilter.h"//Amatorka lookup

    #import"GPUImageMissEtikateFilter.h"//MissEtikate lookup

    #import"GPUImageSoftEleganceFilter.h"//SoftElegance lookup

    #import"GPUImageAddBlendFilter.h"//通常用于创建两个图像之间的动画变亮模糊效果#import"GPUImageDivideBlendFilter.h"//通常用于创建两个图像之间的动画变暗模糊效果#import"GPUImagePolkaDotFilter.h"//像素圆点花样#import"GPUImageLocalBinaryPatternFilter.h"//图像黑白化,并有大量噪点#import"GPUImageLanczosResamplingFilter.h"//Lanczos重取样,模糊效果#import"GPUImageAverageColor.h"//像素平均色值

    #import"GPUImageSolidColorGenerator.h"//纯色

    #import"GPUImageLuminosity.h"//亮度平均#import"GPUImageAverageLuminanceThresholdFilter.h"//像素色值亮度平均,图像黑白(有类似漫画效果)

    #import"GPUImageWhiteBalanceFilter.h"//白平横

    #import"GPUImageChromaKeyFilter.h"//色度键

    #import"GPUImageLowPassFilter.h"//用于图像加亮

    #import"GPUImageHighPassFilter.h"//图像低于某值时显示为黑#import"GPUImageMotionDetector.h"//动作检测

    #import"GPUImageHalftoneFilter.h"//点染,图像黑白化,由黑点构成原图的大致图形#import"GPUImageThresholdedNonMaximumSuppressionFilter.h"//非最大抑制,只显示亮度最高的像素,其他为黑,像素丢失更多

    #import"GPUImageHoughTransformLineDetector.h"//线条检测#import"GPUImageParallelCoordinateLineTransformFilter.h"//平行线检测#import"GPUImageThresholdSketchFilter.h"//阀值素描,形成有噪点的素描#import"GPUImageLineGenerator.h"// 线条#import"GPUImageLinearBurnBlendFilter.h"

    #import"GPUImageGaussianBlurPositionFilter.h"

    #import"GPUImagePixellatePositionFilter.h"

    #import"GPUImageTwoInputCrossTextureSamplingFilter.h"

    #import"GPUImagePoissonBlendFilter.h"

    #import"GPUImageMotionBlurFilter.h"

    #import"GPUImageZoomBlurFilter.h"

    #import"GPUImageLaplacianFilter.h"

    #import"GPUImageiOSBlurFilter.h"

    #import"GPUImageLuminanceRangeFilter.h"

    #import"GPUImageDirectionalNonMaximumSuppressionFilter.h"

    #import"GPUImageDirectionalSobelEdgeDetectionFilter.h"

    #import"GPUImageSingleComponentGaussianBlurFilter.h"

    #import"GPUImageThreeInputFilter.h"

    #import"GPUImageWeakPixelInclusionFilter.h"

    相关文章

      网友评论

        本文标题:GPUImage入门使用

        本文链接:https://www.haomeiwen.com/subject/ajphrktx.html