今日のテーマ
【画像にフィルタ】
顔検出を実施して
自分の想定している場所に画像を貼ることは出来るようになりました。
当初の予定では、ランダムで画像を貼るだけで
アプリをリリースしようとしたのですが、
いろいろなカメラアプリを使ってみて
「アプリの中身が少なすぎるな」と感じたので
”画像を貼る”以外に、”フィルタをする”、”ランダムで点数をつける”
要素をつけるつもりです。
まぁそれでも昨今のアプリからは少なく感じますが
自分の身の丈にあった
「ちょっとだけ笑ってもらえるアプリ」を目指してますのでw
フィルタ方法はだいたい3種類らしい
CIFilter, OpenCV, vImageを使って画像フィルタ処理をかける
上記のサイトで概要がまとまっています。
今回私は、一番実装が簡単なCIFilterを使用しています。
処理的には白黒にするとか、セピアにするとかだけでいいので
次のアプリを作るときは、OpenCVを使ってみたいですね。
画像認識が便利そうです。
CIFilterの参考サイト
【iOS】たった数行で画像のフィルタ/エフェクトが実現できる超便利フレームワークCoreImage。とりあえず7つ紹介!
もう実装の方法を書いて頂いてるのですが、わかりやすいです。
前提をみたせば、後はコピーするだけ。
そして自分用に編集して、関数?メソッドに変更しました。
こんな感じ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
-(UIImage *)FilterImage{ UIImage *screenImage =UIGraphicsGetImageFromCurrentImageContext(); CIImage *ciImage = [[CIImage alloc] initWithImage:screenImage]; CIFilter *ciFilter = [CIFilter filterWithName:@"CIColorControls" //フィルター名 keysAndValues:kCIInputImageKey, ciImage, @"inputSaturation", [NSNumber numberWithFloat:1.0], @"inputBrightness", [NSNumber numberWithFloat:0.5], @"inputContrast", [NSNumber numberWithFloat:3.0], nil ]; CIContext *ciContext = [CIContext contextWithOptions:nil]; CGImageRef cgimg = [ciContext createCGImage:[ciFilter outputImage] fromRect:[[ciFilter outputImage] extent]]; UIImage* tmpImage = [UIImage imageWithCGImage:cgimg scale:1.0f orientation:UIImageOrientationUp]; CGImageRelease(cgimg); return tmpImage; } |
次回はCIFilterを変更させた関数を複数つくって
条件分岐させるという処理を作ります。
そしたらほぼほぼ出来上がりです。
条件分岐が長そうですが、、、
[…] 【画像にフィルタ】アプリ開発日記(8/19) […]
[…] ■【画像にフィルタ】アプリ開発日記(8/19)|トライストア -開発記事でございます。 […]