2013年12月11日

OpenCVをiPhoneアプリで使うには

OpenCVというComputer Visionを扱うライブラリがあります
画像を解析したり効果を加えたりするのに非常に便利

XcodeでOpenCVを使ったプロジェクトをbuildするには

1. OpenCVのframeworkを追加
http://sourceforge.jp/projects/sfnet_opencvlibrary/
ここからzipをダウンロード

2. GeneralタブのFrameworkの”+”のadd otherでOpenCVのファイル一式を展開したディレクトリを追加

3. OpenCVを使いたいソースで
highgui.hppとopencv.hppをimportする

4. Build Settingsタブの
Apple LLVM 5.1 - Language - C++のLanguage DialectをCompiler Default
をlibstdc++(GNU C;; standard lib…)に変更(7の対策)
(追記:この情報は古いです xcode6と最新のopencv (現在2.9を使用中)のframeworkではCompiler DefaultのままでOKでした)

(v2.4ではValid Architecturesにarmv7sが入ったままで大丈夫だった。昔はだめだったらしい。)
→ と思ったらArchiveする時にLinkerでエラーが出ました。v2.4でもValid Archtectureのarmv7sは消さないとダメのようです。

5. Supporting Filesの
プロジェクト名-Prefix.pchのUIKit.hの前に

#ifdef __cplusplus
#import "opencv.hpp"
#endif

を追加(UIKit.hのimportの前に入れる必要がある)
(追記:xcode6で新規プロジェクトを作ると.pchのファイルは作られないみたいで、なくても大丈夫みたいです)

6. BuildするとUnknown type name 'namespace'のエラーが出るので
プロジェクト内の全てのファイルの拡張子を.mは.mmに.hは.hppに変更
main.mmとAppDeligate.mmのヘッダファイルのimport文も合わせて修正
#import "AppDelegate.hpp"など

7. Buildした時に<ext/atomicity.h>が無いというエラーが出たら(4をやってれば出ない)(CoreMediaとCoreVideoがなくても出るみたいなので追加)
(追記:最新のopencvのframework(現在2.9を使用中)を使えば出ないはず)

Build SettingのApple LLVM 5.0 - Language - C++の
C++ Standard Libraryをlibstdc++(GNU C;; standard lib…)に変更
(追記: 最新のframeworkを使ってれば
libc++ (LLVM C++standard library with C++11 support)が正しい)

opencvの古いサンプルコードだとIPLImageという型を使ってるのが多いけど、最近はcv::Matが主流みたい
(ネットには古い情報がたくさん残っててわかりにくいですね… ちゃんとアップデートされてるところを信用しましょう)

ということで、作っていたのが
http://one-hand-engineer.seesaa.net/article/385134648.html
これでした
ラベル:アプリ製作
posted by one-hand-engineer at 16:35| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック