美颜基本概念
GPU
:(Graphic Processor Unit图形处理单元)手机或者电脑用于图像处理和渲染的硬件框架
GPU
工做原理
:CPU指定显示控制器工做,显示控制器根据CPU的控制到指定的地方去取数据和指令, 目前的数据通常是从显存里取,若是显存里存不下,则从内存里取, 内存也放不下,则从硬盘里取,固然也不是内存放不下,而是为了节省内存的话,能够放在硬盘里,而后经过指令控制显示控制器去取。ide
OpenGL ES
:(Open Graphics Library For Embedded(嵌入的) Systems 开源嵌入式系统图形处理框架
),一套图形与硬件接口,用于把处理好的图片显示到屏幕上。spa
GPUImage
:是一个基于OpenGL ES 2.0图像和视频处理的开源iOS框架,提供各类各样的图像处理滤镜,而且支持照相机和摄像机的实时滤镜,内置120多种滤镜效果,而且可以自定义图像滤镜。code
滤镜处理的原理
:就是把静态图片或者视频的每一帧进行图形变换再显示出来。它的本质就是像素点的坐标和颜色变化orm
GPUImage处理画面原理
- GPUImage采用链式方式来处理画面,经过addTarget:方法为链条添加每一个环节的对象,处理完一个target,就会把上一个环节处理好的图像数据传递下一个target去处理,称为GPUImage处理链。
- 好比:墨镜原理,
从外界传来光线,会通过墨镜过滤,在传给咱们的眼睛,就能感觉到大白天也是乌黑一片,哈哈
。 - 通常的target可分为两类
中间环节
的target, 通常是各类filter, 是GPUImageFilter或者是子类.最终环节
的target, GPUImageView:用于显示到屏幕上, 或者GPUImageMovieWriter:写成视频文件。
- 好比:墨镜原理,
- GPUImage处理主要分为3个环节
source(
视频、图片源
) -> filter
(滤镜)
-> final target (
处理后视频、图片
)
GPUImaged
的
Source
:都继承GPUImageOutput的子类,做为GPUImage的数据源,就比如外界的光线,做为眼睛的输出源- GPUImageVideoCamera:用于实时拍摄视频
- GPUImageStillCamera:用于实时拍摄照片
- GPUImagePicture:用于处理已经拍摄好的图片,好比png,jpg图片
- GPUImageMovie:用于处理已经拍摄好的视频,好比mp4文件
GPUImage
的
filter
:GPUimageFilter类或者子类,这个类继承自GPUImageOutput,而且遵照GPUImageInput协议,这样既能流进,又能流出,就比如咱们的墨镜,光线经过墨镜的处理,最终进入咱们眼睛GPUImage
的
final target
:GPUImageView,GPUImageMovieWriter就比如咱们眼睛,最终输入目标。
美颜原理
磨皮
(GPUImageBilateralFilter)
:本质就是让像素点模糊,能够使用高斯模糊,可是可能致使边缘会不清晰,用双边滤波(Bilateral Filter) ,有针对性的模糊像素点,能保证边缘不被模糊。美白
(GPUImageBrightnessFilter)
:本质就是提升亮度。
美颜效果
关注效果,忽悠本人
GPUImage原生美颜效果
利用美颜滤镜实现效果
GPUImage实战
GPUImage原生美颜
- 步骤一:使用Cocoapods导入GPUImage
- 步骤二:建立视频源GPUImageVideoCamera
- 步骤三:建立最终目的源:GPUImageView
- 步骤四:建立滤镜组(GPUImageFilterGroup),须要组合
亮度
(GPUImageBrightnessFilter)
和双边滤波
(GPUImageBilateralFilter)
这两个滤镜达到美颜效果. - 步骤五:设置滤镜组链
- 步骤六:设置GPUImage处理链,从数据源 => 滤镜 => 最终界面效果
- 步骤七:开始采集视频
注意点:视频
SessionPreset
最好使用AVCaptureSessionPresetHigh,会自动识别,若是用过高分辨率,当前设备不支持会直接报错GPUImageVideoCamera
必需要强引用
,不然会被销毁,不能持续采集视频.必须调用
startCameraCapture
,底层才会把采集到的视频源,渲染到GPUImageView中,就能显示了。- GPUImageBilateralFilter的
distanceNormalizationFactor
值越小,磨皮效果越好,distanceNormalizationFactor
取值范围:大于
1
。
利用美颜滤镜实现
- 步骤一:使用Cocoapods导入GPUImage
- 步骤二:导入GPUImageBeautifyFilter文件夹
- 步骤三:建立视频源GPUImageVideoCamera
- 步骤四:建立最终目的源:GPUImageView
- 步骤五:建立最终美颜滤镜:GPUImageBeautifyFilter
- 步骤六:设置GPUImage处理链,从数据源 => 滤镜 => 最终界面效果
注意:对象
切换美颜效果原理
:移除以前全部处理链,从新设置处理链
图玩智能科技为企业提供更稳定更优质的美颜产品及服务,欢迎随时咨询www.toivan.com.继承