contenttaichino.com永遠のネバーランドiPhoneでOpenCV(2.2以降)を使う以前も同じ内容を書いたのですが、OpenCVの開発は大変活発で最新版を使おうと思ったら色々つまずいたので再度エントリを書いておきます。前回はniwさんのエントリをなぞっただけだったので、今回は自力でライブラリのビルドをしました。OpenCVのリポジトリヘッド(2.2以降)です。OpenCVは正式にiOSをサポートしていません。(androidはしてるんですが。)iOS環境では一部の機能を使えないため、使える部分を切り出してビルドするというのがiPhoneでOpenCVを使うということです。使える部分を切り出してビルドをする為のスクリプトがniwさんの記事などで紹介されているのですが、構成が変わる度に他の人に頼るのはどうかという事で自力でビルドしてみようと思いました。ライブラリの生成手順は以下になります。CMakeを使ってXcodeのプロジェクトファイルを生成OpenCVではビルドにCMakeを利用しています。CMakeはプラットフォームごとにビルド環境を生成するツールで、mac上であればMakefileやXcodeプロジェクト、Eclipseプロジェクトなどが選べます。ここではXcodeプロジェクトを使う事にします。CMakeにはCUIとGUIのインターフェースが用意されていますが、慣れていない人はGUIをインストールするのが良いと思います。ココからdmgファイルを落とせます。CMakeを使ってXcodeプロジェクトを生成する前に、パスの確認をしておきます。ここでは/usr/local/src以下にopencv_rootというディレクトリを作成し、ソースやビルド用のディレクトリをその下に置くものとします。opencvのリポジトリHEAD上記ディレクトリを作成したらインストールしたCMakeを起動します。ソースコードへのパスとビルドディレクトリを指定して「Configure」を押しましょう。ウィザードが起動するのでXcodeを選択します。cmake_for_opencvcmake_wizard以上で指定したbuildディレクトリに必要なファイルが出力されます。ここでいくつかiPhone用にビルドするために以下の設定を行います。/usr/local/src/opencv_root/install設定を入力したら、再度Configureを押し、続いてGenerateを押下します。これでビルドディレクトリにXcodeのプロジェクトが生成されます。生成したXcodeプロジェクトを開いたら、まずベースSDKをiOSに設定して再起動します。次にiOSでは使用できない以下のターゲットを削除しましょう。基本的にはhighguiモジュールと、highguiに依存しているターゲットを削除します。手元では削除する際にXcodeの内部エラーが何度か表示されたのですがすべて無視しました。Xcodeでビルドしてライブラリを生成2で設定したXcodeプロジェクトで通常通りビルドを行います。ライブラリ、Debug構成の場合opencv本体のライブラリがlib/Debug以下、opencvが依存しているサードパーティのライブラリ群が3rdparty/lib/Debug以下にそれぞれ出力されます。ここで注意したいのは出力先が現在のアーキテクチャの設定に関わらず上記の場所にライブラリが出力される事です。シミュレータ用とデバイス用の両方をビルドするには出力ファイルを一旦別の場所に移しておく必要があります。ちなみにビルド後は以下のライブラリ群が出力されます。2.2から機能ごとにライブラリが分かれたようです。必要に応じてライブラリを選んでリンクしましょう。../libopencv_calib3d.a./libopencv_contrib.a./libopencv_core.a./libopencv_features2d.a./libopencv_flann.a./libopencv_gpu.a./libopencv_haartraining_engine.a./libopencv_imgproc.a./libopencv_legacy.a./libopencv_ml.a./libopencv_objdetect.a./libopencv_video.aビルドが完了したらinstallターゲットをビルドして、ライブラリのヘッダファイルを1で用意したinstallディレクトリにコピーします。この際にXcodeプロジェクトのディレクトリ以下にあるmodules/cmake_install.cmakeファイルを編集する必要があります。2で削除したターゲットをコメントアウトしています。これでヘッダファイルがinstallディレクトリに配置されます。INCLUDE("/usr/local/src/opencvlib/opencv/build/modules/gpu/cmake_install.cmake")以上でiPhone上でOpenCVを使う準備が整いました。Xcode上でhighguiを削除すればよいので、基本的にはプロジェクトの構成が変わっても対応できると思います。あとは前回のエントリと同様の手順で自分のプロジェクトにopencvライブラリをリンクすればOKです。1個画像処理なアプリを作りたいんですけどなかなか腰が重いです。