1.框架介绍,它能处理来自

此间我们把代理置空,然后让该ImagePicketView消失。这样才能再次回到按钮页面。

//合并滤镜输出的图像

CGImageRef imageRef = [context createCGImage:outputImage
fromRect:outputImage.extent];

原图

图片 1

6.如果想选拔滤镜链 可以再度叠加效果

  • CIFaceBalance: 调整肤色
  • CIVibrance: 在不影响肤色的图景下,改良图像的饱和度
  • CIToneCureve: 改正图像的对比度
  • CIHighlightShadowAdjust: 改善黑影细节

本身经过点击一个按钮触发该事件,然后可以看一下怎么落实的。这一个不难,好赏心悦目看

5.赋给UIImageView对象出示

图片 2

怎么着是旧色调,旧色调就是把一个图片的颜色变旧。暂时这样了然把。一会出来效果可以对照一下。

//显示在视图控件上

imageView.image = chooseImage;

Snip20161218_4.png

CoreImage苹果官方给的一句话是:

2⃣️使用手续:

  • 创建CIImage对象

自我也是率先次用这一个CIImage,查看一下苹果的官方API可以看看:它是CoreImage中的一个类目。So,问题来了,什么是CoreImage呢?

//得到选中的图像

UIImage *chooseImage= info[UIImagePickerControllerOriginalImage];

CoreImage中用到的类重点有:CIImage、CIFilter、CIContext (上下文)、
CIDetector (检测)、CIFeature (特征)

人脸识别需要两个步骤:

注释:

地点这多少个例子中应用了滤镜CISepiaTone,这么些滤镜能使画面全体偏棕褐色,有点复古的职能。

typedef NS_ENUM(NSInteger, UIImagePickerControllerSourceType) {
    UIImagePickerControllerSourceTypePhotoLibrary,
    UIImagePickerControllerSourceTypeCamera,
    UIImagePickerControllerSourceTypeSavedPhotosAlbum
};

(1)按住command 点击CIFilter 进入接口文件 找到第128行-148行全体都是 效果分类

图片 3

- (IBAction)catPhotoFromLibraryAction:(id)sender {
    if(_imagePicker==nil) {
        _imagePicker = [[UIImagePickerController alloc] init];
        _imagePicker.delegate = self;
        _imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;   //提供数据来源
        _imagePicker.allowsEditing = YES;   //允许编辑
        [self presentViewController:_imagePicker animated:YES completion:nil];
    }
}

代码显示:

  • 提供了内建的图片处理滤镜

说实话下面的事物常常采纳的一部分不是太多,所以自己只是领会了弹指间,倘诺有利用的时候再浓密学习一下。希望得以让我们对图像处理有所明白。

2.创建CIFilter滤镜并给滤镜设置属性 属性通过kvc 来设置

func autoAjustmentImage() {
        let inputImage = CIImage(image: originalImage)!
        var resultImage: CIImage?
        let filters = inputImage.autoAdjustmentFilters() as [CIFilter]

        for filter: CIFilter in filters {
            filter.setValue(inputImage, forKey: kCIInputImageKey)
            resultImage = filter.outputImage!
        }
        if let result = resultImage {
            imageView.image = UIImage(CIImage: result)
        }
    }

————————————————–高端的旧色调和高斯模糊来啦————————————————–

滤镜:->给图像添加效果

介绍:1.框架介绍

1)CoreImage

(2)是一个图像框架 它按照OpenGL顶层创立 底层则用着色器来拍卖图像

(3)它拔取了GPU基于硬件加速来拍卖图像

(4)CoreImage中有为数不少滤镜

(5)它们可以四次给予一张图像或者录像帧多种视觉效果 -> 滤镜链

(6)而且滤镜可以连接起来组成一个滤镜链 把滤镜效果叠加起来处理图像

2.类的牵线

1.CIImage:保存图像数据的类 CGImageRef->图像中的数据

2.CIFilter:滤镜类 图片属性举办细节处理的类 它对拥有的像素举行操功能键-值(KVC)来设置

3.CIContext:上下文是兑现对图像处理的实际对象
->滤镜对象输出的图像并不是合成之后的图像  需要采取图像处理的上下文 
合并 输出的图像

3.效能介绍 100+效果可以因此attributes查找需要设置的参数内容

按职能分类:

kCICategoryDistortionEffect 扭曲效率,比如bump、旋转、hole

kCICategoryGeometryAdjustment 几何开着调整,比如仿射变换、平切、透视转换

kCICategoryCompositeOperation 合并,比如源覆盖(source
over)、最小化、源在顶(source atop)、色彩混合格局

kCICategoryHalftoneEffect Halftone效果,比如screen、line screen、hatched

kCICategoryColorAdjustment 色吉剧整,比如伽马调整、白点调整、曝光

kCICategoryColorEffect 色彩效果,比如色调调整、posterize

kCICategoryTransition 图像间转移,比如dissolve、disintegrate with
mask、swipe

kCICategoryTileEffect 瓦片效果,比如parallelogram、triangle

kCICategoryGenerator 图像生成器,比如stripes、constant
color、checkerboard

kCICategoryGradient 渐变,比如轴向渐变、仿射渐变、高斯渐变

kCICategoryStylize 风格化,比如像素化、水晶化

kCICategorySharpen 锐化、发光

kCICategoryBlur 模糊,比如高斯模糊、主题模糊、运动模糊

按使用意况分类:

kCICategoryStillImage 用于静态图像

kCICategoryVideo 用于视频

kCICategoryInterlaced 用于交错图像

kCICategoryNonSquarePixels 用于非矩形像素

kCICategoryHighDynamicRange 用于HDR

使用:

1⃣️查询功效分类里面 的效率 filterNamesInCategory:<#(nullable
NSString *)#>

运作效果图

俺们看一下贯彻代码:(据utide讲解自己也没太深远,就不介绍了)

在iOS应用中,有一类使用很受广大妹纸们的赏识,那就是美图类应用。我们都爱不释手在自拍后给照片加一个滤镜效果,让照片看起来更加有“文艺范”。在iOS内置框架中,为大家提供了一套非常充足的滤镜效果。

CIFilter滤镜的基础运用

任何的类还有:
CIContext/CIDetector/CIFeature/CIFilter等多少个。不多,有时间可以看看看。上边的内容中会涉及一些,到这么些时候再解释表达把。

//让相册页面消失

[self dismissViewControllerAnimated:YES completion:nil];

NSLog(@”%@”,info);

}

  • #### Processing Image

在此间我们就用到了CIContext、CIImage、CIFilter了。那个都是CoreImage框架中的类。其中起关键功效的如故CIFilter,他是滤镜。它的简单介绍如下:

一个按钮采取本地手机内部的图样相册:

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

button.frame = CGRectMake(100, 100, 80, 40);

[button setTitle:@”PHOTO” forState:UIControlStateNormal];

button.backgroundColor = [UIColor brownColor];

[button addTarget:self action:@selector(choosePic)
forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:button];

上边的利用了CoreImage内置的高斯模糊滤镜:**
CIGaussianBlur,设置模模糊半径inputRadius**为5.0。模糊半径越大,末了生成的图像越模糊。

这是苹果API中的东西。我可不曾变动。可以看出其中有六个枚举类:

调用本地相册的格局:

-(void)choosePic{    UIImagePickerController *picker =
[[UIImagePickerController alloc]init];    picker.delegate = self;   
[self presentViewController:picker animated:YES completion:nil];     
  }//采用完图片调用-
(void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary*)info{

地点提到过,CoreImage有活动改革图像的功效,遵照一个CIImage对象,可以收获一组立异图像质料的滤镜,具体可以通过autoAdjustmentFilters
autoAdjustmentFiltersWithOptions来取得这多少个滤镜数组。
收获的滤镜数组一般是底下这一个,大部分情状已经充分了:

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
    _imagePicker.delegate = nil;
    [self dismissViewControllerAnimated:YES completion:nil];
}

2.查询 使用的效用中 可以安装什么样性质(KVC) attributes

 func GaussianBlur() {
        let path = NSBundle.mainBundle().pathForResource("test", ofType: "jpg")!

        let context = CIContext()
        guard let filter = CIFilter(name: "CIGaussianBlur") else {
            return
        }
        filter.setValue(5.0, forKey: "inputRadius")

        let image = CIImage(contentsOfURL: NSURL(fileURLWithPath: path))
        filter.setValue(image, forKey: kCIInputImageKey)
        let result = filter.outputImage!
        let cgImage = context.createCGImage(result, fromRect: result.extent)

        imageView.image = UIImage(CGImage: cgImage!)
    }

 

1.查询 效果分类中 包含哪些意义:filterNamesInCategory:

来看一下CoreImage的机能:

当大家点击相机的时候,大家进入一个照相界面:(图片就不贴出来了)

//创设CIContext上下文 合并源图片和滤镜

CIContext *context =[CIContext contextWithOptions:nil];

let filter = CIFilter(name: "CIGaussianBlur")
print("\(filter.inputKeys)")
// 打印结果:["inputImage", "inputRadius"]
print("\(filter.outputKeys)")
// 打印结果:   ["outputImage"]
print("\(filter. attributes)")
/* 打印结果:
  ["CIAttributeFilterCategories": <__NSArrayI 0x600000057af0>(
        CICategoryBlur,
        CICategoryStillImage,
        CICategoryVideo,
        CICategoryBuiltIn
  )
, "CIAttributeFilterDisplayName": Gaussian Blur, 
  "CIAttributeFilterAvailable_iOS": 6, 
  "inputImage": {
    CIAttributeClass = CIImage;
    CIAttributeDescription = "The image to use as an input image. For filters that also use a background image, this is the foreground image.";
    CIAttributeDisplayName = Image;
    CIAttributeType = CIAttributeTypeImage;
},
 "CIAttributeFilterAvailable_Mac": 10.4,
 "CIAttributeReferenceDocumentation": http://developer.apple.com/library/ios/documentation/GraphicsImaging/Reference/CoreImageFilterReference/index.html#//apple_ref/doc/filter/ci/CIGaussianBlur, 
"CIAttributeFilterName": CIGaussianBlur, 
"inputRadius": {
    CIAttributeClass = NSNumber;
    CIAttributeDefault = 10;
    CIAttributeDescription = "The radius determines how many pixels are used to create the blur. The larger the radius, the blurrier the result.";
    CIAttributeDisplayName = Radius;
    CIAttributeIdentity = 0;
    CIAttributeMin = 0;
    CIAttributeSliderMax = 100;
    CIAttributeSliderMin = 0;
    CIAttributeType = CIAttributeTypeScalar;
}]
*/
- (IBAction)takePhotoAction:(id)sender {
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
        _imagePicker = [[UIImagePickerController alloc] init];
        _imagePicker.delegate = self;
        _imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;

        [self presentViewController:_imagePicker animated:YES completion:nil];
    }else {
        NSLog(@"相机不可用");

    }
}

//设置滤镜的性能

[filter setValue:inputImage forKey:kCIInputImageKey];

CoreImage是一个图纸分析和处理技术,提供了为静态图片和视频接近实时处理的功用,它是iOS的图像处理中十分关键的框架,要留意它与CoreGraphics等中间的区分,CoreGraphics是做绘图的,CoreImage可以承受CoreGraphics绘制的图样,经过处理,比如滤镜,然后输出。
它能处理来自CoreGraphicsCoreVideoImage
I/O
的框架的数据类型,通过GPU或者CPU举行渲染。
采纳CoreImage不需要通晓OpenGL ES的现实细节,也不需要理解GPU的干活细节

    CGImageRef imageRef = [context createCGImage:result fromRect:CGRectMake(0, 0, self.imageView.image.size.width, self.imageView.image.size.height)];

    UIImage *image = [[UIImage alloc] initWithCGImage:imageRef];   //

//添加源图片

CIImage *inputImage = [CIImage
imageWithCGImage:imageView.image.CGImage];

图片 4

//操作旧色调的方法
- (void)filterSepicTone {
    CIContext *context = [CIContext contextWithOptions:nil];   //创建CIContext对象,它规定了各种选项,包括颜色格式以及内容是否运行在CPU或是GPU上。
    CIImage *cImage = [CIImage imageWithCGImage:_imageView.image.CGImage];
    CIImage *result;

    //创建旧色滤镜
    sepiaTone= [CIFilter filterWithName:@"CISepiaTone"];

    [sepiaTone setValue:cImage forKey:@"inputImage"];

    double value = [_mySlider value];    //获取滑块的值。

    NSString *text = [[NSString alloc] initWithFormat:@"旧色调:%.2f",value];
    _myLabel.text =text;

    [sepiaTone setValue:[NSNumber numberWithFloat:value] forKey:@"inputIntensity"]; //设置旧色滤镜色调强度


    result = [sepiaTone valueForKey:@"outputImage"];   //取得滤镜之后的图像

    CGImageRef imageRef = [context createCGImage:result fromRect:CGRectMake(0, 0, self.imageView.image.size.width, self.imageView.image.size.height)];

    UIImage *image = [[UIImage alloc] initWithCGImage:imageRef];   //
    _imageView.image = image;

    CFRelease(imageRef);    //释放CGImageRef
    flag = 0;
}

在此间只是单纯的一片段机能 所以只是充裕一个按钮显示效果:

UIButton *button1 = [UIButton buttonWithType:UIButtonTypeCustom];

button1.frame = CGRectMake(100, 150, 80, 40);

[button1 setTitle:@”Filter” forState:UIControlStateNormal];

button1.backgroundColor = [UIColor brownColor];

[button1 addTarget:self action:@selector(addColorFilter)
forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:button1];

  • #### 自动改进图像

取得了拍卖后的图样。

(2)选用之中某一个分拣 NSLog -> [CIFilter filterNamesInCategory:刚才拷贝的分类]; -> 打印出来的 是其一分类包含的持有 效果  -> 拷贝选拔之中的某一个功效

不等的CIFilter会有两样的参数,假设我们想清楚具体的某部CIFilter有什么样参数,可以调用它的inputKeys办法,或者调用***
outputKeys*获取它的出口参数列表,大家一般采纳它的参数outputImage,再或者调用\*
attributes***拿到这么些CIFilter对象的有所音讯:它的名字、所属的归类、输入参数、输出参数、各参数的取值范围以及默认值等。
几乎拥有的滤镜都有inputImage那些输入参数,系统现已为它预定义了kCIInputImageKey,假诺没有预定义的,使用字符串。

这里就是读取图库内容。我们得以窥见。只是sourceType改了弹指间。

//赋给UIImageView对象出示

imageView.image =[UIImage imageWithCGImage:imageRef];

CoreImage的效益描述

率先我们需要在自定义的ViewController中装置代理

图片 5

————————起头啰嗦CoreImage了————————

//查询滤镜里面的性能

NSLog(@”%@”,filter.attributes);

// NSLog(@”%@”,[CIFilter
filterNamesInCategory:kCICategoryColorEffect]);

CIImage *outputImage =filter.outputImage;

图片 6

 

1.实例CIImage ->首先把UIImage ->CHImageRef ->CIImage

  • 创设CIContext上下文,用作画布
  • 创建CIFilter对象
  • 出口滤镜

当自家点击按钮时方可识别出人脸的岗位,然后标记出脸,嘴和肉眼的职务。

3.创建CIContext上下文  合并

Processing Image
就是使用滤镜,滤镜是一个图片处理算法程序,可以对输入图片展开一个像素点一个像素点举行算法上的效益处理,然后生成输出的图样。Processing
Image
借助的是<a
name=”fenced-code-block”>CIFilter</a>和<a
name=”fenced-code-block”>CIImage</a>这三个类,分别对应着滤镜输入输出图片
看一下滤镜的基本功运用:

UIImagePickerControllerOriginalImage拿到的拍的肖像。拿到照片之后我们就可以对他开展处理了。这里还要记得让pickerView消失并且把代理置空。

NSLog -> [CIFilter filterWithName:刚才拷贝采用中间的某一个职能].attributes ->拿到这些滤镜所有可以设置的性能

高斯模糊之后的效率图,模糊半径为5.0

sourceType:你设置的那个souceType就是你调用的品类:包括相机,图库和相薄。

//设置滤镜的颜料

[filter setValue:[CIColor colorWithRed:1.0 green:0.5 blue:0.6
alpha:1] forKey:kCIInputColorKey];

  • CIRedEyeCorrection: 修复因相机的闪光灯导致的各类红眼

1、拍照和读取图库内容

4.合并绿净输出的图像

该类可以读取iOS设备中的图片以及视频。还可以够拍照。接下来就讲解一下哪些促成啊。

设置滤镜属性需要的基本点步骤和方法:

  • 一部分特色辨识能力,比如识别矩形
  • 自动改革图像
  • 链接多少个滤镜达到自定义的功能,提供链式滤镜的效果,一个滤镜的输出可以是下一个滤镜的输入
  • 在GPU上创造自定义滤镜的法力
  • 人脸识其它能力(只好识别是不是满脸,不享有用脸刷卡的效率)

另一个代理方法就是用来当拍摄后点击使用图片那几个按钮触发的代理方法。里面有个info。那么些事物太有用了,里面都是消息:什么UIImagePickerControllerMediaType、UIImagePickerControllerOriginalImage,还有UIImagePickerControllerMediaMetadata。他们都是键值,然后中间有广大事物,你可以自己试一下里面有吗。我这里透过

首先使用滤镜设置图片效果,需要创建一个imageView 

imageView = [[UIImageView alloc]initWithFrame:self.view.frame];

imageView.contentMode =UIViewContentModeScaleAspectFit;

[self.view addSubview:imageView];

  • #### 高斯歪曲

动用Core
Image框架:执行图像加工和录像图像处理。

//创制一个滤镜

CIFilter *filter =[CIFilter filterWithName:@”CIColorMonochrome”];

来看一张Apple官方的图:

然后看哪样调取相机吧:

2、读取图库内容:直接看代码。

CoreImage提供了众多种内建的滤镜,提供了用key-value的花样创设滤镜,
与此同时一个滤镜的输出可以是下一个滤镜的输入,这使得大家得以创立各个各个的功力。

Perform image processing and video image manipulation with the Core
Image framework.

使用CIFilter的步骤:

 2、获取当前人脸面像图片

图片 7

率先我们需要用UIImagePickerViewController的类方法isSourceTypeAvailable:方法去看清一下照相机是否可用。

运作结果:

这里的_mySlider只是自我的一个调值工具。先看看效果把。

也就是说大家借使想用那些类,首先我们需要添加UIImagePickerControllerDelegate和UINavigationControllerDelegate探究。这样才能应用

@interface ViewController : UIViewController<UIImagePickerControllerDelegate,UINavigationControllerDelegate>

OK,那会拍摄会用了呢。就如此简单。

- (IBAction)faceAction:(id)sender {
    CIContext *context = [CIContext contextWithOptions:nil];
    UIImage *imageInput = _inputImageView.image;
    CIImage *image = [CIImage imageWithCGImage:imageInput.CGImage];
    //设置识别参数; Accuracy代表的是经度。
    NSDictionary *parm = [NSDictionary dictionaryWithObject:CIDetectorAccuracyHigh forKey:CIDetectorAccuracy];   //设置识别率高点
    //声明一个CIDetector,并设定识别器类型
    CIDetector *faceDetector = [CIDetector detectorOfType:CIDetectorTypeFace context:context options:parm];

    //取得识别结果
    NSArray *detectResult = [faceDetector featuresInImage:image];

    UIView *resulteView = [[UIView alloc] initWithFrame:_inputImageView.frame];
//    resulteView.backgroundColor = [UIColor redColor];
    [self.view addSubview:resulteView];
    for (CIFaceFeature *faceFeature in detectResult) {
        //脸部
        UIView *faceView = [[UIView alloc] initWithFrame:faceFeature.bounds];
        faceView.layer.borderWidth = 1;
        faceView.layer.borderColor = [UIColor orangeColor].CGColor;
        [resulteView addSubview:faceView];
        //左眼
        if (faceFeature.hasLeftEyePosition) {
            UIView *leftEyeView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 5, 5)];
            [leftEyeView setCenter:faceFeature.leftEyePosition];
            leftEyeView.layer.borderWidth = 1;
            leftEyeView.layer.borderColor = [UIColor redColor].CGColor;
            [resulteView addSubview:leftEyeView];
        }

        //右眼
            if (faceFeature.hasRightEyePosition) {
                UIView *rightEyeView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 5, 5)];
                [rightEyeView setCenter:faceFeature.rightEyePosition];
                rightEyeView.layer.borderWidth = 1;
                rightEyeView.layer.borderColor = [UIColor redColor].CGColor;
                [resulteView addSubview:rightEyeView];
            }
            //嘴巴
            if (faceFeature.hasMouthPosition) {
                UIView *mouseView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 5, 5)];
                [mouseView setCenter:faceFeature.mouthPosition];
                mouseView.layer.borderWidth = 1;
                mouseView.layer.borderColor = [UIColor redColor].CGColor;
                [resulteView addSubview:mouseView];
            }

    }
    [resulteView setTransform:CGAffineTransformMakeScale(1, -1)];

    if ([detectResult count]>0) {
        CIImage *faceImage = [image imageByCroppingToRect:[[detectResult objectAtIndex:0] bounds]];

        UIImage *face = [UIImage imageWithCGImage:[context createCGImage:faceImage fromRect:faceImage.extent]];

        self.faceImageView.image = face;

        [self.faceButton setTitle:[NSString stringWithFormat:@"识别人脸数:%lu",(unsigned long)[detectResult count]] forState:UIControlStateNormal];
    }
//    resulteView.backgroundColor = [UIColor redColor];
}

 CIDetector是CoreImage中的一个风味辨识滤镜。它可以找到图片中的人脸,不过是何人不可能断定,需要数据库。要想识别可以看OpenCV和Face.com。

————————————————–结束了————————————————–

 

图片 8图片 9

左手是原图,左侧是旧色调的图。(那是自家最喜爱的一个女明星。可惜因为因为白血病与2015年辞世了。伤心。你永远活在自己的心里。)

这几个不多讲解,你可把它和UIColor做一个绝对而言,内容几乎等同,所以假若你会用UIColor就会用CIColor。不过对类本身介绍一下把。

CIColor包括了这些可用颜色值的颜色值和颜料空间。你会和任何Core
Image框架中的其他类混合使用,例如CIFilter,CIContext和CIImage在操作图片是来创立滤镜。

实际它和下边的旧色调差不多,只可是换了一晃滤镜而已。,让我们看一下效果图:

- (void)gaosiMohu {
    CIContext *context = [CIContext contextWithOptions:nil];
    CIImage *cImage = [CIImage imageWithCGImage:_imageView.image.CGImage];
    CIImage *result;

    gaussianBlur = [CIFilter filterWithName:@"CIGaussianBlur"];
    [gaussianBlur setValue:cImage forKey:@"inputImage"];
    double value = [_mySlider value];
    value = value*10;

    NSString *text = [[NSString alloc] initWithFormat:@"高斯模糊Radius:%.2f",value];
    _myLabel.text = text;

    [gaussianBlur setValue:[NSNumber numberWithFloat:value] forKey:@"inputRadius"];
    result = [gaussianBlur valueForKey:@"outputImage"];
//    result = [gaussianBlur outputImage]
    CGImageRef imagRef = [context createCGImage:result fromRect:CGRectMake(0, 0, _imageView.image.size.width, _imageView.image.size.height)];

    UIImage *image = [[UIImage alloc] initWithCGImage:imagRef];
    _imageView.image = image;
    CFRelease(imagRef);
    flag = 1;

}

下面的就毫无说了。不对,还有一个更首要的吗。

 等一下,还有源码下载地址呢:http://pan.baidu.com/s/1eQg1qLG

5、接下去就是人脸识别了:

接下来去设置滤镜的色彩强度,然后通过outputImage将拍卖后的图纸输出到result。再然后通过

他是生育CIImage对象的,典型的就是,你可以因而它举办加工图片。让大家看一下操作旧色调的情势把。

高斯模糊的结果如图所示。具体的落实我也不介绍了,等选拔的时候在认真看看吧。

图片 10图片 11

我这边没有拍卖好原图的号子,其实拍卖好的话能够刚好比对五官。

简言之看一代码:里面有一句很紧要:

————————就啰嗦到此处把————————

——————————————————–说真的,具体我还不太精晓,只好先记下了逐月了然,因为刚刚接触CoreImage——————————————————–

 

 1、首先建立人脸的面纹数据库

#pragma mark - UIImagePickerViewDelegate
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    UIImage *originImage;
    if (picker.sourceType == UIImagePickerControllerSourceTypeCamera) {
        originImage = (UIImage *)[info objectForKey:UIImagePickerControllerOriginalImage];
    }else if (picker.sourceType==UIImagePickerControllerSourceTypePhotoLibrary)
    {
        originImage = (UIImage *)[info objectForKey:UIImagePickerControllerEditedImage];

    }
    self.imageView.image = originImage;
    self.imageView.contentMode = UIViewContentModeScaleAspectFit;
    _imagePicker.delegate = nil;
    [self dismissViewControllerAnimated:YES completion:nil];
}
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
    _imagePicker.delegate = nil;
    [self dismissViewControllerAnimated:YES completion:nil];
}

3、旧色调

 

以此艺术也不用多说了,应该都能看懂。

 3、用当下的面纹编码与数据库中的面纹编码举办比对。

这五个职能的主导就是UIImagePickerViewController。

里头的UIImagePickerControllerSourceTYpeCamera其实是一个枚举:里面定义了之类的情节:

您也许用过UIImage,用过CGImage。可是有没有用过CIImage呢???

创立旧色滤镜。其中的CISepiaTone是无法更改的。还有下面用到的inputImage/outputImage。要问何故?应该是万分类中定义的性质吧。不可以由此措施调用,只可以通过KVC调用了。(不亮堂对不对,知道的大神请告诉自己弹指间)

 

(其中的allowsEditing设置为yes就代表你挑选的图片可以编制,默认是No。)

就这没了??也太简单了。可是说的言简意赅:用中文翻译一下就是:

既然如此都代理了,这把代理方法也写上去把。

先是个指的是图库,第二个指的是相机,第五个指的是保留相薄。

4、高斯模糊

————————————————–图像处理就讲这么多啊————————————————–

其间有一个Cancel按钮,也就是当我点击Cancel按钮时会触发代理方法

下边开首上课对图像的处理:具体包括摄录、读取图库内容、高斯模糊、旧色调,还有相比NB的人脸识别。

第一个类:CIColor。

//创建旧色滤镜
    sepiaTone= [CIFilter filterWithName:@"CISepiaTone"];

相关文章