2011年2月21日月曜日

OpenCV 2.2のiOS向けなユニバーサルバイナリを作る


iPhoneでOpenCVを利用したい!と検索したところ

OpenCV/Using OpenCV 2.2 on iOS SDK 4.1

のようなありがたい記事がありましたので、OpenCV 2.2 を iOS向けにビルドしてみました。

まずは上記の記事内容を読んでください。

その際に、armv6/armv7/i386のバイナリをユニバーサルバイナリにしてしまえば便利なんじゃないかと思い、適当に作り上げました。pythonが必要です。

*** もっといい方法がありました ***

iOS向けのパッチが当たっていて、
OpenCV-2.2.0とniw-iphone_opencv_test-4ab0572が同じディレクトリに存在するものとします。

各アーキテクチャ向けのライブラリの作成

1) パッチファイルの保存
opencv_cmake.sh.patchをniw-iphone_opencv_test-4ab0572に保存する

2) opencv_cmake.shにパッチを当てる
patch -p1 opencv_cmake.sh << opencv_cmake.sh.patch




3) ライブラリのビルド/インストール
cd niw-iphone_opencv_test-4ab0572

mkdir build_device_armv6
cd build_device_armv6
../opencv_cmake.sh Device ../../OpenCV-2.2.0 armv6
make -j 4
make install
cd ..

mkdir build_device_armv7
cd build_device_armv7
../opencv_cmake.sh Device ../../OpenCV-2.2.0 armv7
make -j 4
make install
cd ..

mkdir build_simulator
cd build_simulator
../opencv_cmake.sh Simulator ../../OpenCV-2.2.0
make -j 4
make install
cd ..

niw-iphone_opencv_test-4ab0572/opencv_simulator
niw-iphone_opencv_test-4ab0572/opencv_device_armv6
niw-iphone_opencv_test-4ab0572/opencv_device_armv7
に、インストールされます。

ユニバーサルバイナリの作成

1) スクリプトファイルの保存
archive_libraries.pyをniw-iphone_opencv_test-4ab0572に保存します

2) ユニバーサルバイナリの作成
mkdir opencv_universal
python archive_libraries.py

niw-iphone_opencv_test-4ab0572/opencv_universal に ユニバーサルバイナリとなったOpenCVが出来上がってます。