一、介紹
GPUImage是Brad Larson在github托管的一個開源項目,項目實現了圖片濾鏡、攝像頭實時濾鏡,該項目的優點不但在於濾鏡很多,而且處理效果是基於GPU的,比使用CPU性能更高。
二、類庫
1.輸入源
在Sources文件夾下包含了GPUImageVideoCamera相機視頻輸入源,GPUImageStillCamera相機圖像輸入源,GPUImagePicture靜態圖片輸入源,GPUImageMovie視頻輸入源。
2.通道
GPUImageFilterPipeline將輸入源利用濾鏡組投射到輸出界面上。
3.濾鏡
3.1調整顏色的濾鏡
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
GPUImageBrightnessFilter//亮度 GPUImageExposureFilter//曝光 GPUImageContrastFilter//對比度 GPUImageSaturationFilter//飽和度 GPUImageGammaFilter//伽馬線 GPUImageLevelsFilter GPUImageColorMatrixFilter GPUImageRGBFilter GPUImageHueFilter GPUImageToneCurveFilter GPUImageHighlightShadowFilter GPUImageLookupFilter GPUImageAmatorkaFilter GPUImageMissEtikateFilter GPUImageSoftEleganceFilter GPUImageColorInvertFilter GPUImageGrayscaleFilter GPUImageMonochromeFilter GPUImageFalseColorFilter GPUImageHazeFilter GPUImageSepiaFilter GPUImageOpacityFilter GPUImageSolidColorGenerator GPUImageLuminanceThresholdFilter GPUImageAdaptiveThresholdFilter GPUImageAverageLuminanceThresholdFilter GPUImageHistogramFilter GPUImageHistogramGenerator GPUImageAverageColor GPUImageLuminosity GPUImageChromaKeyFilter |
3.2圖像處理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
GPUImageTransformFilter//變化 GPUImageCropFilter// GPUImageLanczosResamplingFilter GPUImageSharpenFilter GPUImageUnsharpMaskFilter GPUImageFastBlurFilter GPUImageSingleComponentFastBlurFilter GPUImageGaussianBlurFilter GPUImageSingleComponentGaussianBlurFilter GPUImageGaussianSelectiveBlurFilter GPUImageGaussianBlurPositionFilter GPUImageMedianFilter GPUImageBilateralFilter GPUImageTiltShiftFilter GPUImageBoxBlurFilter GPUImage3x3ConvolutionFilter GPUImageSobelEdgeDetectionFilter GPUImageThresholdEdgeDetectionFilter GPUImageCannyEdgeDetectionFilter GPUImageHarrisCornerDetectionFilter GPUImageNobleCornerDetectionFilter GPUImageShiTomasiCornerDetectionFilter GPUImageNonMaximumSuppressionFilter GPUImageXYDerivativeFilter GPUImageCrosshairGenerator GPUImageDilationFilter GPUImageRGBDilationFilter GPUImageErosionFilter GPUImageRGBErosionFilter GPUImageOpeningFilter GPUImageRGBOpeningFilter GPUImageClosingFilter GPUImageRGBClosingFilter GPUImageLocalBinaryPatternFilter GPUImageLowPassFilter GPUImageHighPassFilter GPUImageMotionDetector GPUImageHoughTransformLineDetector GPUImageLineGenerator GPUImageMotionBlurFilter GPUImageZoomBlurFilter |
3.3混合模式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
GPUImageChromaKeyBlendFilter GPUImageDissolveBlendFilter GPUImageMultiplyBlendFilter GPUImageAddBlendFilter GPUImageSubtractBlendFilter GPUImageDivideBlendFilter GPUImageOverlayBlendFilter GPUImageDarkenBlendFilter GPUImageLightenBlendFilter GPUImageColorBurnBlendFilter GPUImageColorDodgeBlendFilter GPUImageScreenBlendFilter GPUImageExclusionBlendFilter GPUImageDifferenceBlendFilter GPUImageHardLightBlendFilter GPUImageSoftLightBlendFilter GPUImageAlphaBlendFilter GPUImageSourceOverBlendFilter GPUImageColorBurnBlendFilter GPUImageColorDodgeBlendFilter GPUImageNormalBlendFilter GPUImageColorBlendFilter GPUImageHueBlendFilter GPUImageSaturationBlendFilter GPUImageLuminosityBlendFilter GPUImageLinearBurnBlendFilter GPUImagePoissonBlendFilter GPUImageMaskFilter |
3.4視覺效果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
GPUImagePixellateFilter GPUImagePolarPixellateFilter GPUImagePolkaDotFilter GPUImageHalftoneFilter GPUImageCrosshatchFilter GPUImageSketchFilter GPUImageThresholdSketchFilter GPUImageToonFilter GPUImageSmoothToonFilter GPUImageEmbossFilter GPUImagePosterizeFilter GPUImageSwirlFilter GPUImageBulgeDistortionFilter GPUImagePinchDistortionFilter GPUImageStretchDistortionFilter GPUImageSphereRefractionFilter GPUImageGlassSphereFilter GPUImageVignetteFilter GPUImageKuwaharaFilter GPUImageKuwaharaRadius3Filter GPUImagePerlinNoiseFilter GPUImageCGAColorspaceFilter GPUImageMosaicFilter GPUImageJFAVoronoiFilter GPUImageVoronoiConsumerFilter |
3.5.輸出
在Outputs文件夾下,GPUImageView常用輸出view,GPUImageMovieWriter視頻重編碼。
三、使用
1.將GPUImage工程拖到需要圖像濾鏡處理的工程中,導入框架
- CoreMedia
- CoreVideo
- OpenGLES
- AVFoundation
- QuartzCore
2.在使用GPUImage的類中,引入#import “GPUImage.h”
3.創建一個輸入源。如:
1 |
GPUImagePicture *staticPicture = [[GPUImagePicture alloc] initWithImage:stillImagesmoothlyScaleOutput:YES]; |
4.創建濾鏡。如:
1 |
GPUImageFalseColorFilter *filter = [[GPUImageFalseColorFilter alloc] init]; |
5.創建輸出界面。如:
1 |
GPUImageView *filteredVideoView = [[GPUImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, viewWidth, viewHeight)]; |
也可將自己現成的view,作為輸出界面,強制類型轉換(GPUImageView*)self.view。
6.創建通道。如:
1 |
GPUImageFilterPipeline *pipeline = [[GPUImageFilterPipeline alloc]initWithOrderedFilters:arrayTempinput:staticPictureoutput:(GPUImageView*)self.view]; |
7.圖片圖像處理
1 2 |
[staticPicture processImage]; [videoCamera startCameraCapture]; |
四、下載
注:后面會把每個濾鏡的基本功能注釋碼上