iPhone&Androidプログラミング記: OpenCV + iPhone
英語─上達しないのは努力不足が原因ではなかった!
英語が話せない…を解決する博士開発の噂の英語教材!返品保証付!

2009年06月23日

iPhoneでOpenCVを使えるようにする(6)

ずいぶんと間が空いてしまいましたが、iPhone上でOpenCVを動作させる方法をご紹介します。

その前に、最近になって新しいOpenCVの本が出版されていました。
この本を本屋さんで見つけて、そういえば最近またOpenCVから離れていたなぁという事を思い出しました。

実践OpenCV―映像処理&解析
カットシステム
発売日:2009-05
発送時期:在庫あり。
ランキング:15829


内容としてはOpenCVで出来る事とやり方の紹介という感じです。
応用という部分まではいっていない印象でした。
最新のOpenCV 1.1.0 preに対応した書籍の出版という事だと思いますので、以前に出版されていた下の本でも十分だと思います。

OpenCV プログラミングブック
毎日コミュニケーションズ
発売日:2007-09-22
ランキング:108253
おすすめ度:3.0
おすすめ度3 とっかかりとしてはよい本
おすすめ度4 OpenCVを日本語でまとまって解説した初めての本
おすすめ度2 肩すかし


以前に出版されたこの本を持っている人は一度本屋さんで立ち読みをしてから購入を考えた方がいいと思います。

ではでは本題へ。
以前はFrameworkを作成してプロジェクトに登録してOpenCVを使えるようにするという事を紹介しました。
しかし公式で認められていないFrameworkは実機では使えないという事がありました。

そこでどうしたら良いかという事になります。
OpenCVにはヘッダーなどが公開されているオープンソースとなっていますので、それをそのままプロジェクトに登録してやります。

opencv-1.1.0の中にあるcvとcxcoreの中のソースファイルをプロジェクトに追加します。
ピクチャ 2.jpg

このフォルダの中にincludeとsrcというフォルダがあるのでその中のファイルを追加します。
Makefile.amとMakefile.inは必要ありません。
というか追加しないでください。

例としてこんな感じで追加します。
ピクチャ 3.png

あとはFrameworkの時に
#import <OpenCV/OpenCV.h>
と書いていた部分を
#import "cv.h"
#import "cxcore.h"
と書き換えます。

これでビルドターゲットをiPhone OS 2.2.1の場合であれば実機上で動作させる事が可能になります。
iPhone OS 3.0だとリンクのところで「library not found for -lstdc++-static」という謎のエラーをgcc4.2が吐いてしまいます。
ライブラリは使っていないはずなのにライブラリが見つかりませんというエラーが何故出力されるのか謎です。
iPhone OS 2.2.1まではgcc4.0なので、gcc4.2になって何か他にも変更しないといけない部分があるのか今のところは分かりません。


posted by ラキシス at 12:51 | Comment(3) | TrackBack(0) | OpenCV + iPhone | このブログの読者になる | 更新情報をチェックする

2009年04月07日

iPhoneでOpenCVを使えるようにする(5)

iPhoneで使われるUIImageとOpenCVで使われるIplImageの相互変換についてです。

少々気を付けないといけない事もありますが、簡単に出来ます。

まずはUIImageからIplImageにする場合です。

- (IplImage *)ToIplImage:(UIImage *)image
{
CGImageRef imageRef = image.CGImage;
IplImage *iplimage;
iplImage = cvCreateImage(cvSize(image.size.width, image.size.height),
IPL_DEPTH_8U, 4);

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef contextRef;
contextRef = CGBitmapContextCreate(
iplimage->imageData,
iplimage->width,
iplimage->height,
iplimage->depth,
iplimage->widthStep,
colorSpace,
kCGImageAlphaPremultipliedLast|kCGBitmapByteOrderDefault);
CGContextDrawImage(contextRef,
CGRectMake(0, 0, image.size.width, image.size.height),
imageRef);
CGContextRelease(contextRef);
CGColorSpaceRelease(colorSpace);

IplImage *ret = cvCreateImage(cvGetSize(iplimage), IPL_DEPTH_8U, 3);
cvCvtColor(iplimage, ret, CV_RGBA2BGR);
cvReleaseImage(&iplimage);

return ret;
}


渡されたUIImaageからCGImageを作成する。
渡された画像のイメージサイズでIplImageを作成する。
UIImageはRGBAの4チャンネルなので、IplImageを作成する時も4チャンネルの指定で作成します。

Contextを作成するためのColorspaceを作成する。
Contextを作成します。
第1引数にIplImageのデータを指すポインタを指定する事で画像の書き出し先がIplImageになります。

作成したContextに対して渡された画像を描画する。

IplImageに描かれたので、ColorspaceとContextはReleaseする。

OpenCVではRGBAではなくBGRで扱う方がいいので、BGRへと変換していきます。
変換元と変換先のポインタの書式が合っていないと変換出来ないので、BGR用のImageを作成して変換しないといけません。

不要になったIplImageはReleaseする。
続きを読む
posted by ラキシス at 17:24 | Comment(0) | TrackBack(0) | OpenCV + iPhone | このブログの読者になる | 更新情報をチェックする

2009年03月30日

iPhoneでOpenCVを使えるようにする(4)

OpenCVを使ってちょこちょこと遊んでいます。

元画像はOpenCVのサンプルで使われているlenaさんです。

ピクチャ 14.png

続きを読む
タグ:OpenCV iPhone Xcode
posted by ラキシス at 20:46 | Comment(0) | TrackBack(0) | OpenCV + iPhone | このブログの読者になる | 更新情報をチェックする

2009年03月25日

iPhoneでOpenCVを使えるようにする(3)

前回はOpenCV.frameworkを作成するところまで説明しました。

まずは作成したOpenCV.frameworkを自分のプロジェクトへコピーします。
opencv-1.1.0 → build_i386 → OpenCV.framework をコピーする。

ビルド時にOpenCV.frameworkを読み込ませるための設定をします。

上のメニューから
プロジェクト → 新規ビルドフェーズ → 新規コピーファイル

ピクチャ 7.jpg

デスティネーションをフレームワークにします。

ピクチャ 8.jpg

設定ウィンドウを閉じる。

続きを読む
posted by ラキシス at 00:00 | Comment(0) | TrackBack(0) | OpenCV + iPhone | このブログの読者になる | 更新情報をチェックする

2009年03月19日

iPhoneでOpenCVを使えるようにする(2)

前回はOpenCVをインストールする所まででした。

今回はiPhoneOS向けのFrameworkを作る事をやってみましょう。

続きを読む
posted by ラキシス at 19:25 | Comment(2) | TrackBack(0) | OpenCV + iPhone | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。