IOS Core Image之二
生活随笔
收集整理的這篇文章主要介紹了
IOS Core Image之二
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在上篇博客IOS Core Image之一中了解了下CIImage、CIFilter、CIContext三個類的使用,這篇了解下濾鏡鏈(多濾鏡)和人臉檢測(不是人臉識別)。
一、多濾鏡
1.有些效果不只是一個濾鏡能完成的,需要多個濾鏡疊加,讓一個濾鏡的outputImage作為另一個濾鏡的inputImage。
在下面的代碼中,給圖片加了兩個濾鏡效果一個高斯模糊一個旋轉。
#import "ViewController.h" #import <CoreImage/CoreImage.h> @interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];CIImage *inputImg = [[CIImage alloc]initWithCGImage:[UIImage imageNamed:@"1.jpg"].CGImage];// 濾鏡鏈合成CIImage *outputImage = [self oldPhoto:inputImg withAmount:10];CIContext *context=[CIContext contextWithOptions:nil];CGImageRef cgimg =[context createCGImage:outputImage fromRect:[outputImage extent]];UIImageView *img = [[UIImageView alloc] initWithFrame:self.view.bounds];img.backgroundColor = [UIColor redColor];img.contentMode = UIViewContentModeScaleToFill;img.image=[UIImage imageWithCGImage:cgimg];[self.view addSubview:img];CGImageRelease(cgimg);} -(CIImage *)oldPhoto:(CIImage *)img withAmount:(float)intensity {//高斯模糊濾鏡CIFilter *gaussianBlurFilter = [CIFilter filterWithName:@"CIGaussianBlur"];[gaussianBlurFilter setValue:img forKey:@"inputImage"];[gaussianBlurFilter setValue: @(intensity) forKey:@"inputRadius"];//旋轉濾鏡CIFilter *affineTransformFilter = [CIFilter filterWithName:@"CIAffineTransform"];[affineTransformFilter setValue:gaussianBlurFilter.outputImage forKey:@"inputImage"];[affineTransformFilter setValue: [NSValue valueWithCGAffineTransform:CGAffineTransformMakeRotation(intensity)] forKey:@"inputTransform"];return affineTransformFilter.outputImage; }- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated. }@end2.效果圖
二、人臉檢測
1.網上有的寫的是人臉識別,了解了下發現CoreImage中的算不上人臉識別,也只是檢測下人臉的位置,眼睛、嘴巴、是否微笑等,并不能識別出是不是同一個人。這個參考了博客http://blog.csdn.net/wildfireli/article/details/7164628.用自己素顏圖(兒童不宜,戴墨鏡觀看防止亮瞎眼)試了下還算OK。
// // ViewController.m // CoreImage // // Created by City--Online on 15/11/10. // Copyright ? 2015年 City--Online. All rights reserved. // #import "ViewController.h" #import <CoreImage/CoreImage.h> @interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];UIImage* image = [UIImage imageNamed:@"psu.jpg"];UIImageView *testImage = [[UIImageView alloc] initWithImage: image];[testImage setTransform:CGAffineTransformMakeScale(1, -1)];[[[UIApplication sharedApplication] delegate].window setTransform:CGAffineTransformMakeScale(1, -1)];[testImage setFrame:CGRectMake(0, 0, testImage.image.size.width,testImage.image.size.height)];[self.view addSubview:testImage];CIImage* ciimage = [CIImage imageWithCGImage:image.CGImage]; // detectorOfType 檢測類型 context畫布 options字典CIDetector *detector=[CIDetector detectorOfType:CIDetectorTypeFace context:nil options:@{CIDetectorAccuracy:CIDetectorAccuracyHigh}];NSArray *features= [detector featuresInImage:ciimage];// 在 CIFeature類中有CIFaceFeature、CIRectangleFeature、CIQRCodeFeature、CITextFeature子類for (CIFaceFeature *faceFeature in features) {CGFloat faceWidth = faceFeature.bounds.size.width;if (faceFeature.hasLeftEyePosition) {[self addViewWithPoint:faceFeature.leftEyePosition withWidth:faceWidth];}if (faceFeature.hasRightEyePosition){[self addViewWithPoint:faceFeature.rightEyePosition withWidth:faceWidth];}if (faceFeature.hasMouthPosition) {[self addViewWithPoint:faceFeature.mouthPosition withWidth:faceWidth];}}} -(void)addViewWithPoint:(CGPoint)point withWidth:(float)faceWidth {UIView* view = [[UIView alloc] initWithFrame:CGRectMake(point.x-faceWidth*0.1,point.y-faceWidth*0.1, faceWidth*0.2, faceWidth*0.2)];[view setBackgroundColor:[[UIColor blueColor] colorWithAlphaComponent:0.3]];[view setCenter:point];view.layer.cornerRadius = faceWidth*0.1;[self.view addSubview:view]; }- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated. }@end2.效果圖
由于清屏網無恥,抄襲我博客并將我頭像放在它網上,我就把這圖去了
三、高斯模糊第三方
項目背景視圖要用高斯模糊的效果,在網上找了個第三方UIImage+ImageEffects,東西也不多,效果又很好。
轉載于:https://www.cnblogs.com/5ishare/p/4956095.html
總結
以上是生活随笔為你收集整理的IOS Core Image之二的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UVA-10285 Longest Ru
- 下一篇: iOS开发- 相机(摄像头)获取到的图片