- 公開日:2015年07月14日
記事概要
objective-cでOpenCVの使い方を学習します。
その1に続きです。
開発環境
- Xcode 6.4
- Swift 1.2
難易度
★★★★☆(中級)
opencvのダウンロード
http://opencv.org/downloads.html OpenCV for iOSをダウンロードします。
ダウンロードしたopencv2.frameworkをプロジェクトから参照します。
プロジェクトフォルダ → TARGETS[opencv-obj-c] → Build Phaseを選択します。
Link Binary With Librariesの+を押し、add otherボタンからフレームワークを追加します。
OpenCVの実装
ViewController.mをViewController.mmに変更します。これによりC++が利用可能になります。
opencv の c++ ライブラリを使うための対策です。
[UIImageToMat]と[MatToUIImage]を使用するため、ライブラリをインポートします。
[UIImageToMat]はUIImage を cv::Mat に変換します。
[MatToUIImage]はcv::Mat を UIImage に変換します。
このパターンがopencvの基本的な使い方になります。
サンプルとしてグレースケールの実装を行ないます。
【objective-c/ViewController.mm】 #import "ViewController.h" #import <opencv2/opencv.hpp> #import <opencv2/imgcodecs/ios.h> @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. UIImage* sampleImg = [UIImage imageNamed:@"sample"]; self.imageview.image = sampleImg; // 元画像データを保存 self.originalimageview = [UIImage imageWithCGImage:[self.imageview CGImage]]; // 初期はNO self.imageswitch.on = NO; [self.imageswitch addTarget:self action:@selector(switchBtn:) forControlEvents:UIControlEventValueChanged]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (void)switchBtn:(id)sender { NSLog(@"pushed"); UISwitch *sw = sender; if (sw.on) { // グレースケール変換 UIImage *edge = [self getEdgeImg:self.imageview.image]; self.imageview.image = edge; //NSLog(@"スイッチがONになりました."); } else { self.imageview.image = self.originalimageview.image; //NSLog(@"スイッチがOFFになりました."); } } - (UIImage *)getEdgeImg:(UIImage *) img{ // UIImage を cv::Mat に変換 cv::Mat mat; UIImageToMat(img, mat); // グレイスケール変換 cv::Mat gray; cv::cvtColor(mat, gray, CV_BGR2GRAY); // 画像のエッジを検出 cv::Mat edge; cv::Canny(gray, edge, 200, 100); UIImage *edgeImg = MatToUIImage(edge); return edgeImg; } @end
ビルドし、アプリを立ち上げてみましょう。
SwitchがOFFの状態
SwitchがONの状態
OpenCVが実装できていますね。
以上です。
Objective-cでのiphoneアプリ開発にオススメの本
iphone開発の経験があり、より優れた設計のiphoneアプリを作りたい人向けの本です。
iphoneプログラミングをパーツ化するテクニックを学べます。アプリを量産したい人には必須の本です。
OpenCvでの開発にオススメの本
OpenCVはこの本一択です。長く利用できるコストパフィーマンスに優れた良書です。
あとは公式サイト(とgoogle検索と試行錯誤)で大丈夫です。
参考サイト
紹介頂いている本が見あたらないのですが,もしよろしければ教えて頂けないでしょうか?
返信削除