美顏基本概念
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.繼承