2011/06/26

Android2.2+OpenCV2.3の実験

OpenCV2.3をAndroidで動かせるようになったので、
実際にどれぐらいの速度で処理できるかを試してみました。

処理の内容:
Java側でVGAサイズのカメラプレビューのバイト配列を取得(YUV420のデータ)
C側でバイト配列からCvMat型に変換する
CvMat型の画像をFAST特徴量検出器にかける
結果の画像を今度はintの配列にして返す
Java側で表示

結果:1フレームあたり80~90msで処理できた。
(CvMatに変換した後、FAST検出器にかけない場合は50ms程度だったので、FAST検出器部分の処理は30~40ms)

動作中の映像は以下の通りです。





最初はもっと遅かったのですが、Application.mkのCPP_FLAGSというところに最適化オプションスイッチの-O3を加えたらかなり速くなりました。
NDKのデフォルトでは、コンパイラの最適オプションがついていないようです。


また、JNIついて書かれているPDFがOracleのページにあったのでリンクを貼っておきます。
JNIって何なの?と思っていたので、大変参考になりました。
Java Native Interface


ではまた。

2011/06/23

Android+OpenCV2.3の環境構築に挑戦

OpenCV2.3が出たので、また懲りずにAndroid+OpenCV2.xの環境構築に挑みます。
(今日はちゃんとサンプル以外のも動かせたので成果ありです)

参考にするページはいつものOpenCV公式Wikiです。
Android
Android2.3.0というページが増えてたので、そこを参考にしています。

まずはOpenCV2.3.0をSourceForgeからダウンロードしてきます。
私はOpenCV2.3.0rc.tar.bz2をとってきて解凍しました。
また、その他必要なCMakeと公式AndroidNDKもダウンロードしておきます。

材料が揃ったので、Android用OpenCVのビルドに入ります。

1.ANDROID_NDKとANDROID_NDK_TOOLCHAIN_ROOTをExportする。
ビルドの間だけ有効であれば良いので、./bashrcに書く必要はありません。
これは環境に合わせて設定してください。
(android-toolchainの設定方法は、Android+OpenCV2.2を参考にしてみてください)

2.ライブラリをビルドします。
  • cd opencv/android
  • sh ./scripts/cmake_android_armeabi.sh
  • cd build_armeabi
  • make -j6
  • make install
注意:Wikiに載っているとおりにcmake_android.shを実行してその後ビルドすると、
エミュレータでは動作しないAndroid用OpenCVライブラリが出来上がります。
(cmake_android.shでは、ターゲットがarmeab-v7aで、cmake_android_armeabi.shの場合はターゲットがarmeabiになります。Androidのエミュレータはarmeabiになるので、せっかくビルドが通るようになっても動きませんでした(これでかなりの時間ハマりました))


3.インストールが完了すると、NDK-TOOLCHAIN-ROOTに設定したフォルダの中に、ライブラリがコピーされると思います。
私の場合は、ライブラリは/opt/android-toolchain/user/armeabi/lib、インクルードファイルは/opt/android-toolchain/user/armeabi/includeとなりました。

4.サンプルのHelloAndroidを作成します。
 HelloAndroidというプロジェクトは、Android端末内のコンソールアプリケーションを作るプロジェクトです。Javaは一切出てきません。
また、サンプルの説明ではCMakeを使ってビルドするようですが、CMakeでビルド出来なかったので、ndk-buildでビルド出来ないかいろいろとやってみました。

4.1 まずはopencv/apps/HelloAndroidフォルダ内に、jniフォルダを作ってmain.cppのコピーを放り込みます。
4.2 そのあとjniフォルダの中に、Application.mkファイルを作成します。
Application.mkファイルの中身は以下のとおりです。
#STLを使うのと、ターゲットがarmeabiだということを伝える
#http://opencv.willowgarage.com/wiki/OpenCVAndroidBinariesBuild にApplication.mkのお手本があったのでコピペしました
APP_STL := gnustl_static 
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := armeabi


4.3 同じくjniフォルダ内にAndroid.mkファイルを作って、以下の内容を書き込みます。
中身は長時間の試行錯誤の上、動作したものです。いらない行があるかもしれません。

LOCAL_PATH := $(call my-dir)
#Android.mkファイルも、Makefileの一種なので、
#タブで整形するとコマンド行と認識されてしまってエラーが出ます。。

include $(CLEAR_VARS)

#ライブラリのフォルダは、各自変更してください。
ANDROID_OPENCV_LIBS:=-L/opt/android-toolchain/user/armeabi/lib -lopencv_contrib -lopencv_calib3d -lopencv_objdetect \
                   -lopencv_features2d -lopencv_imgproc -lopencv_video -lopencv_highgui -lopencv_ml -lopencv_legacy -lopencv_flann -lopencv_core

#ここも同じ。
OPENCV_3RDPARTY_LIBS:=-L/opt/android-toolchain/user/armeabi/share/opencv/3rdparty/lib \
 -llibjpeg -llibpng -llibtiff -llibjasper -lzlib

#includeフォルダも各自変更してください。
LOCAL_C_INCLUDES:=  /opt/android-toolchain/user/armeabi/include

LOCAL_LDLIBS+= $(ANDROID_OPENCV_LIBS) 
LOCAL_LDLIBS+= $(OPENCV_3RDPARTY_LIBS)

LOCAL_MODULE    := helloandroid
LOCAL_SRC_FILES := main.cpp

#OpenCVで使うライブラリ一覧
LOCAL_SHARED_LIBRARIES:= opencv_core opencv_highgui opencv_contrib opencv_calib3d opencv_objdetect \
   opencv_features2d opencv_imgproc opencv_video \
    opencv_ml opencv_legacy opencv_flann libjpeg libpng libtiff libjasper zlib
#include $(BUILD_SHARED_LIBRARY)

#コンソールアプリとして実行するので以下のオプションをつける。
#公式ドキュメントには載っていないので、そのうちなくなってしまうかも?
include $(BUILD_EXECUTABLE)


あとはndk-buildを実行すると、アプリケーションが出来上がります。


kouji@kouji-ubuntu:~/OpenCV-2.3.0/android/apps/HelloAndroid$ ndk-build
Compile++ thumb  : helloandroid <= main.cpp
Executable     : helloandroid
/opt/android-toolchain/user/armeabi/lib/libopencv_core.a(system.o): In function `cv::tempfile(char const*)':
system.cpp:(.text._ZN2cv8tempfileEPKc+0x22): warning: warning: mktemp() possibly used unsafely; consider using mkstemp()
/opt/android-toolchain/user/armeabi/share/opencv/3rdparty/lib/liblibjasper.a(jas_stream.o): In function `jas_stream_tmpfile':
jas_stream.c:(.text.jas_stream_tmpfile+0x44): warning: warning: tmpnam() possibly used unsafely; consider using mkstemp()
Install        : helloandroid => libs/armeabi/helloandroid


あとはAndroid2.1などのエミュレータを起動し、以下のような感じで転送して実行するだけです。

adb push libs/armeabi/helloandroid /data/helloandroid
adb shell
#cd /data
#chmod 755 helloandroid
#./helloandroid
Hello Android!

そのあと、画像が出来て入ればOK。
こんな感じの画像になります。



これで念願のAndroid+OpenCV2.3+ndk-buildの環境が出来ました。

ではまた。

OpenCV2.3.0rcのパノラマ写真作成ソフトを試してみました

6月22日にOpenCV2.3がリリースされました。

変更点は以下のとおりです。
OpenCV2.2からOpenCV2.3rcの変更点@OpenCV.jp


新機能の中に、stitchingというのがありました。
パノラマ写真を作ることが出来るアプリケーションのベータ版だそうです。

stitchingを実行するために、早速SourceForgeからダウンロードしてインストール。
この辺は2.2と変わって無いので説明は省略します。



makeしたあとmake installを実行すると、ライブラリのインストールと/usr/local/binにいろいろなアプリケーションが登録されます。

opencv_stitchingも/usr/local/binにありました。

早速家のまわりの写真を放り込んだら、30秒ぐらいで見事パノラマ写真が出来ました。

opencv_stitchingのソースコードもあるので、そのうちどんな処理を行っているかを探ってみたいです。

2011/06/21

XOOMをAndroid3.1へアップデート

au版のXOOMにも、アップデートが来たので早速インストール。

3.1になってからは、ウィジェットのサイズを変えることが出きるようになりました。
今までGmailのウィジェットがちょっと小さい気がしていたのですが、
これで好きなサイズに設定することが出きるようになりました。

また、マイクロSDカードも使えるようになりました。
今までは内部ストレージがデフォルトのSDカード領域として
認識されていたのですが、3.1からは
  • /sdcard   :本体
  • /sdcard-ext :マイクロSD
といった感じでアクセスできるようになりました。

また、「ファイラ」というアプリケーションが増えていました。

ファイラを実行してみると、以下のような画面になりました。
起動時にアクセス先を決めれるようです。



今作っているファイラよりも機能が豊富だった場合は、開発を止めてしまおうかと少し思いましたが、そんなに機能は多くないので、このままファイラの開発を進めようと思います。

ではまた。

2011/06/19

Honeycomb用ファイラ(α版)をリリース

四月ぐらいから少しずつ作っていたHoneycomb用のファイラですが、
ファイルの閲覧、移動、コピー、削除ができるようになったのでα版としてリリースしました。

アプリケーション名は、「HCエクスプローラー」です。

アイコンもGIMPで作ってみました。 やっぱり絵心が無いとこういうのはキツいですね。。

HCエクスプローラのアイコン。
蜂の巣の中にファイル等が放り込まれてる感じにしています

このアプリケーションのウリは、PC用のOSのエクスプローラにある、
「ツリー表示」機能を持っているというところ(だけ)です。

今後追加する機能(優先度順):

  • ファイルのリネーム
  • ファイル移動時に発生する、ファイル名衝突への対応(今は問答無用で上書きしてます)
  • ファイルの検索機能
  • 日付によるファイルのソート機能(現在はファイル名、ファイルサイズのみ)
  • ツリーの領域と、ファイル一覧の領域のサイズを可変にする(今は固定です)
  • SMBフォルダへのアクセス
  • ZIPファイルの解凍、圧縮
ではまた。

2011/06/18

Android+JCIFS

twitterを久しぶりに見に行ったら、
質問メッセージが届いていることに気づきました。



質問の回答と備忘録を兼ねて、記事を書いておきます。


JCIFSでSMB接続する時の使い方。

まずはJCIFSのソースコードをダウンロード。
http://jcifs.samba.org/

私はjcifs-1.3.15.zipをダウンロードしてきました。

Androidのプロジェクトを作って、
srcフォルダ内に、jcifs1.3.5/srcのjcifsフォルダをコピーします。
するとjcifs.httpとhttpsクラスで色々警告がでるので、httpとhttpsクラスをまるごと削除します。
(今はhttpとhttpsは使う予定なし)

smbクラスだけ使えればいいのですが、smbクラスも他のクラスに依存しているようなので
ひとまず他のクラスも消さずにとっておきます。


また、AndroidManifest.xmlにを追加しておきます。

SMBFileの使い方は、Java.ioのファイルとほとんど同じ感じで使えます。

こんな感じ。

//SMBファイルを使うサンプル
 //例外処理コードは省いてます
    public SmbFile[] getSmbFileList(String aSmbURL) throws IOException
    {
       SmbFile file = new SmbFile(aSmbURL);
       SmbFile[] fileList=file.listFiles();
 
   System.out.println(file.getName());
       int i=0;
       for (i=0;i>fileList.length;i++)
       {
        System.out.println(fileList[i].getName());
        }
       return fileList;
 
 return null;
    }



JCIFSのsampleフォルダに、わらわらとサンプルコードがあるので、
目的別にサンプルコードを漁ると良さそうです。

注意点
SMBに限ったことでは無いのですが、ファイル操作系やネットワーク通信系の処理は、
メインスレッドで行わずに、Threadを継承したクラスか、AsyncTaskを使った方が良いです。

私の場合は、ファイル/ネットワーク系の操作はThreadを継承させたクラスを作り、
Javaのコンソールアプリとしてある程度作った後にAndroidに組み込む方式をとっています。


ではまた。

2011/06/17

Android ndk-buildの小ネタ

昨日、今日とAndroid+OpenCV2.2についていろいろとチャレンジしてましたが、
結局サンプルを動かす以外のことは出来ませんでした。

サンプル自体もかなり複雑なことをやっているようで、
私には何が何だか分からず。

というわけで、Android+OpenCV1.1のバージョンに戻すことにしました。

Android+OpenCV1.1の場合は、ここのサイトから、android_opencv.tar.gzをダウンロードし、
好きなプロジェクトフォルダを作成した後jniフォルダを作り、その中に展開したものを放り込みます。

あとはプロジェクトフォルダに移動して ndk-buildを実行するだけです。
早い・簡単・安定の3拍子。(関数はOpenCV2.2に比べれば減りますが)



昨日、今日と色々いじった結果、ndk-buildも中でmakeを呼んでいることが分かりました。
また、make用のオプションコマンドもある程度渡せることが分かりました。

んで、ndk-build時の小ネタは、 -j オプションをつけるということです。
-jオプションを指定することで、複数のジョブを同時に走らせることができるようになります。

-jオプションの数値をいじったときの、Android+OpenCV1.1のプロジェクトのビルドにかかる時間を測ってみたので書いておきます。

  • なし: 2分45秒
  • -j3:1分  
  • -j6:32秒 
  • -j8:35秒
  • -j20:38秒

私のPCに載っているCPUは6コアなので、 -j6オプションが一番効率が良さそうです。
ジョブを増やしすぎると、スレッドの切り替えによるオーバーヘッドかなにかで
処理時間が少しずつ長くなっているようです。

マルチコアCPUが載っているPCを使っている方は、ndk-buildの際は-jオプションをつけると
ビルド待ちの時間が減るのでは無いでしょうか。


ではまた。

2011/06/15

Android用 OpenCV2.2のインストール

この前のOpenCVのインストールガイドを翻訳していた時に、
Androidも対象になっていたことに気がつきました。

なので今日はAndroid用のOpenCV2.2をセットアップしたいと思います。

svnクライアントとCmakeは既にインストールされていたので、
NDKとOpenCVのソースコードを取得することに。

NDKをAndroid developersからダウンロード。
現時点ではr5cになってました。
/home/kouji/Google/android-ndk-r5c に解凍。

ソースコードをダウンロード。
svn co https://code.ros.org/svn/opencv/trunk/opencv

SWIGをUbuntuソフトウェアセンターで検索。
swigをインストール。

Ant,JDK,AndroidSDKは既にあります。

NDKへのパスをエクスポート。
export ANDROID_NDK=~/Google/android-ndk-r5c 



kouji@kouji-ubuntu:~/Google/opencv/android$ sudo sh ./scripts/cmake_android.sh
loading initial cache file ../CMakeCache.android.initial.cmake
-- Using default path for toolchain /opt/android-toolchain
-- If you prefer to use a different location, please define the environment variable: ANDROID_NDK_TOOLCHAIN_ROOT
CMake Error at android/android.toolchain.cmake:187 (message):
  neither nor /opt/android-toolchain does not exist!
略)

と、いろいろとメッセージが出てきました。

ANDROID_NDK_TOOLCHAIN_ROOT も設定しないとダメみたいですね。
でも、Android-toolchainはどこにあるのやら。


OpenCVのWikiを調べていると、Android experimentalというもの中に、
cd android-cmake/scripts
./get_ndk_toolchain_linux.sh $WORK
という記載がありました。

ファイルをダウンロードして、
get_ndk_toolchain_linux.shの中身を見てみると、

cd $destination/android-ndk-r5b
NDK=`pwd`
$NDK/build/tools/make-standalone-toolchain.sh --platform=android-5 --install-dir=./android-toolchain

となっていました。
Android NDKのbuildフォルダ内にstandalone-toolchainを作るスクリプトがあるみたいです。
コマンドをちょっといじって、

cd ~/Google
./android-ndk-r5c/build/tools/make-standalone-toolchain.sh --platform=android-8 --install-dir=./android-toolchain

とやってみると、
Copying prebuilt binaries...
Copying sysroot headers and libraries...
Copying libstdc++ headers and libraries...
Copying files to: ./android-toolchain
Cleaning up...
Done.

toolchainができたようです。

このパスをExportします。

export ANDROID_NDK_TOOLCHAIN_ROOT=~/Google/android-toolchain

OpenCVのAndroidフォルダに移動して再チャレンジ。
もう一回

-- Using default path for toolchain /opt/android-toolchain
-- If you prefer to use a different location, please define the environment variable: ANDROID_NDK_TOOLCHAIN_ROOT
CMake Error at android/android.toolchain.cmake:187 (message):
  neither nor /opt/android-toolchain does not exist!

まだtoolchainが見つからないようです。

ヘルプメッセージに載っていた、シンボリックリンクを作る方式に変更。
sudo ln -s ~/Google/android-ndk-r6c /opt/android-ndk-r5b
sudo ln -s ~/Google/android-toolchain /opt/android-toolchain


またチャレンジ

kouji@kouji-ubuntu:~/Google/opencv/android$ sudo sh ./scripts/cmake_android.sh
loading initial cache file ../CMakeCache.android.initial.cmake
-- Using default path for android NDK /opt/android-ndk-r5b
-- If you prefer to use a different location, please define the environment variable: ANDROID_NDK
-- Using default android API level android-8


~略~
--   GUI: 
--     GTK+ 2.x:                   FALSE
--     GThread:                    FALSE
-- 


~略~
--     Install path:               /opt/android-ndk-r5b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/user/armeabi-v7a
-- 
--     cvconfig.h is in:           /home/kouji/Google/opencv/android/build
-- -----------------------------------------------------------------
-- 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/kouji/Google/opencv/android/build
kouji@kouji-ubuntu:~/Google/opencv/android$ 

Makefileができたー

cd build
sudo make -j8

5分ぐらいでビルド完了。
(ビルド中はPCの全コアが100%近く使われてました。makeはマルチコア対応のようです)

インストールします。
sudo make install

Installing: /opt/android-ndk-r5b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/user/armeabi-v7a/share/opencv/3rdparty/lib/liblibtiff.a
等と表示され、ライブラリがインストールされました。

インストールは無事終わったようなので、今度サンプルを動かしてみたいと思います。

ではまた。



2011-06-21 追記
Android+OpenCV2.2の組み合わせで、独自のプロジェクトを作った場合の
使い方がよく分からず、結局Android+OpenCV1.1の組み合わせに戻ってしまいました。
残念。。。

2011-06-23
OpenCV2.3でもう一度挑戦したら、何とか出来ました。


2011/06/12

パノラマ写真プログラム2

Androidのファイラ作成がなかなか進まないので、
気分転換にOpenCVで遊ぶことにしました。

遊びのネタは、去年作ったパノラマ写真プログラムです。
去年は突貫工事で作りましたが、今年は小さな機能を持つものを作り、
そこから機能を追加していく感じにしようと思います。


最初に、一枚の画像から適当に切り出した二枚の画像をくっつけるプログラムを作ります。
あんまり意味はありませんが、まずは必要最小限のところから始めます。

今回用意したのは以下の二枚の画像です。





二枚の画像とも、一枚の画像から、同じサイズで切り出しています。

その画像を、今回作ったプログラムに渡すと、以下のような感じで結合されます。

結合した画像
プログラムの処理の流れは以下のとおりです。
1、二枚の画像をグレースケールで読み込みます。
2、それぞれの画像のSURF特徴量を抽出し、特徴量のペアを作ります。
3、特徴量のペアから、間違ってペアになっているものを省きます。
4、正しいペアから、移動量(X、Y)を算出します。
5、移動量(X、Y)を算出した後、大きな画像を作成し、二枚の画像を貼り付けます。

ソースコードは別館に保管してあります。

次は二枚以上の画像に対応できるように作っていきたいと思います。
ではまた。

Ubuntu11.04 64ビット版にOpenCV2.2をインストール (2)

翻訳がかなり長くなったのでエントリを分けます。

私の環境は以下のとおり。
Ubuntu 11.04(amd64)
Eclipse 3.5.2
OpenCV2.2のビルドとインストールは、MakeFileで行うことにしました。
まずはソースコードの入手。
SVNから最新のソースコードを入手することにしました。

cd /home/kouji/work
svn co https://code.ros.org/svn/opencv/trunk

opencvフォルダと、opencv_extraフォルダが出来上がります。

OpenCVで使いそうなライブラリの入手。
Ubuntuのアプリケーションセンターで、cmakeとcmake-gui,libtbb-dev,libtbb2,libavformat-dev , libswscale-dev をインストール。

CMake GUIを起動します。
ソースコードの場所: /home/kouji/work/opencv
出力先:/home/kouji/work/opencv/release
左下のConfigureを押して、Unix Makefileを選択。

再度Configureをクリック。 TBBにチェックが入っていなかったので、TBBにチェックを入れて再度Configureをクリック。画面の赤い部分がなくなったのを確認して、Generateをクリック。
CMake GUIを終了します。

生成したディレクトリに移動して、make開始。
cd /home/kouji/work/opencv/release
sudo make
ビルドが開始されます。
10分程度でビルドが完了したので、インストールします。

sudo make install

ビルドしたライブラリが/usr/local/libにインストールされます。

これでOpenCVのインストールは完了です。

Eclipseでプロジェクトを作った後は、コンパイラの設定のところで

-lopencv_core -lopencv_imgproc -lopencv_calib3d -lopencv_video -lopencv_features2d -lopencv_ml -lopencv_highgui -lopencv_objdetect -lopencv_contrib -lopencv_legacy

を追加すればOKです。
 


Ubuntu11.04 64ビット版にOpenCV2.2をインストール

以前、Ubuntu11.04をクリーンインストールしたので、
OpenCVの作業環境もすべてクリーン(全消去)になりました。

なのでまたインストールをすることにしました。

=OpenCVの公式Wikiの適当意訳と共にお送りいたします=
オリジナルは http://opencv.willowgarage.com/wiki/InstallGuide です。
注:訳すのが面倒になったところは端折ってあります。

OpenCV インストールガイド 

概要
1.安定版のOpenCV2.2が必要な場合は、sourceforgeからダウンロードしてください。
2.開発中の最新版ソースコードが必要な場合は、SVN(https://code.ros.org/svn/opencv/trunk/opencv)をチェックアウトしてください。
3.CMakeを使ってOpenCVのバイナリを作成してください。(事前ビルドされているVisualStudio2010用の場合はこの手順はスキップしてください)
4.各プロジェクトごとのコンパイラ設定に、OpenCV用の設定を追加してください。


1)最新の安定バージョンのOpenCVを手に入れる
SourceForgeからダウンロードしてください。 
・Windowsの場合)Exeパッケージをダウンロードして実行してください。パッケージは32ビットOS用に作られてるので注意してください。また、TBBサポートは含まれていません。一般的には、Zipファイルのソースコードをダウンロードしてきて、それを自分でコンパイルしてください。
・Linux/MacOS/その他のOSの場合) ソースコードのtarballをダウンロードしてください。

または、SVNリポジトリから最新のソースコードをダウンロードします。

2)OpenCVを使うために必要なライブラリやツールをインストールする
・C/C++コンパイラ(OpenCV2.2は、Windows環境ではVisualStudio(2008,2010,Express Editionを含む)やMinGW、MacOSXではXCode3.2以降、Linuxやその他のOSではGCC4.3以降で動作します。 それ以前のコンパイラを使用している場合は、OpenCV1.1をOpenCV2.2の代わりに使用してください。

・CMake2.6以降 CMakeは、OpenCVのSVNスナップショットをビルド出来る唯一のソフトです。
・(オプション)Subversionクライアント
・(オプション)Python 2.6.xか2.7.x (Python3.xのサポート状況は不明です)とNumpy
・(オプション)Intel TBB。 OpenCVで並列処理を行う際に使用します。 OpenMPはもう使用しなくなりました。【重要】TBB2.2以降のみ動作します。(Ubuntu9.10ユーザの方へ・・・libtbb2とlibtbb-devパッケージを、Ubuntu10.04から取得することが出来ます。)
・(オプション)Qt4.6以降。HighGUIのバックエンドとして、Qtを使用することが出来ます。詳しくは Qt-OpenCV-Multithreaded for required steps. を見てください。
・(オプション)IPP5.1から6.1(7はダメです) OpenCVはIPPは不要ですが、IPPを使って色変換やHarr特徴量のトレーニング、DFT関数を早くすることも可能です。
・LiveTexディストリビューション。最新のOpenCVリファレンスマニュアルのPDFを作成する時に必要です。
・(オプション)最新のCUDAツールキット。GPUサポートを使用するときに必要です。(NVidia製のGPUでのみ有効です)

その他の必要なもの(Linux/BSD/その他Unix系のOS)
・pkg-config。コンフィグレーションの際に、OpenCVをさらに使いやすくすることができます。
・(オプション)gtk+ 2.xとそれに付随するパッケージ群(glib,gthreadなど) gtk+は、WindowsやMacOSX以外のOSのhighguiのデフォルトバックエンドとなります。
・(オプション)libjpeg,libtiff,libjasper,libpng,zlib,openxr. OpenCVに含まれているバージョン以外のものを使う場合はインストールしてください。(openxrはOpenCVに含まれてません)
・(オプション)ffmpeg, libgstreamer, libxine, unicap, libdc1394 2.x.
 上記のパッケージは、インストールされているべきです。これらのパッケージは、highguiでビデオのエンコードやデコード、キャプチャをする際に必要となります。Ubuntu9.10でこれらのパッケージをまとめてインストールする場合は、以下のコマンドを実行してください。
sudo apt-get install libavformat-dev libswscale-dev

その他の必要なもの(MacOSX)
・XCode3.2以降。このバージョンは必要なc++コンパイラを含んでいるだけではなく、CocoaやQTKitなどのhighuiをより機能的にしてくれるフレームワークも含んでいます。
*注:Macは最近使って無いので以下省略。

その他の必要なもの(Android)
Android ページを参照してください。



 3)OpenCVライブラリをCMakeとC++コンパイラを使ってソースコードからビルドする
注:特定のプラットフォーム用のガイド(Mac,Ubuntu(プレビルド版,Debian&Ubuntu,Linux,MinGW)があるので、そちらも参照してください。

CMakeを設定する
生成されたMakeファイルや、VisualStudio、XCodeまたはEclipseプロジェクトのフォルダ保存する一時ディレクトリを作成してください。以降、と表記します。

もし、CMake GUIを使う場合は、"Configure"をクリックして設定の初期化を行います。その後オプションを調整し、もう一度"Configure"をクリックして、その後"Generate"をクリックします。
もしTBBやIPPを既にインストールしている場合は、TBBSupportと IPP SupportのチェックをONにすると、より良いパフォーマンスが得られます。Pythonラッパーをビルドしたい場合や、サンプルをビルドしたい場合、PDFのマニュアルを作りたい場合は、明示的にチェックをONにしてください。

コマンドラインを使用する場合は、に入った後、以下のようにタイプしてください。
cmake []
例:
cd ~/projects/opencv # INSTALLファイルやCmakeLists.txtなどを含んでるディレクトリ
   mkdir release
   cd release
   cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON ..

リリース構成のMakefileが/releaseディレクトリ内に生成されます。



GCCでコンパイル&インストール
・Visual Studio,XCode,Eclipse用のプロジェクトファイルが生成された後は、IDEでプロジェクトファイルを開いて、ビルドしてください。
・makefileを生成した場合は、生成されたテンポラリディレクトリに入り、 make/nmakeユーティリティを実行してください。その後、オプションで sudo make install を実行してください。

・もしIDEが"make install"を実行しなかった場合は、コマンドラインから実行してください。
以下略)


OpenCVをテストする
CMakeGUIで "BUILD_EXAMPLES"にチェックした場合や、コマンドラインのcmakeで"-D BUILD_EXAMPLES=ON" オプションを使用した場合は、デモのプログラムもビルドされます。
いくつかの必要な画像は、サンプルのソースディレクトリ内に保管されているので、そこからバイナリファイルがあるフォルダにコピーしてきてください。
(以下略)


4.あなたのプロジェクトにOpenCV用の設定をする
それぞれの開発環境用のインストールガイドは以下のとおりです。
Visual Studio
Eclipse
C++ Builder
DevCpp
CodeBlocks
Linux
Mac OS/X
MinGW
Android
あなたのプロジェクトでCMakeを使うことも出来ます。Getting startedFindOpenCV.Cmakeページを参照してください。
・もしくは、各IDEの設定に、OpenCVのinclude,lib,binディレクトリを追加してください。
・MakeFileを自分で書く場合は、必要なライブラリ名やライブラリパスを下記のような感じで記載してください。


g++ -o my_example my_example.cpp -lopencv_core -lopencv_imgproc -lopencv_calib3d -lopencv_video -lopencv_features2d -lopencv_ml -lopencv_highgui -lopencv_objdetect -lopencv_contrib -lopencv_legacy

 *以下略


5. OpenCVによる最先端のプロジェクトで楽しみましょう!
・もし、あなたがOpenCVの初心者であれば、Beginners FAQを読むことをおすすめします。
・Blob Detectionや、Face Recognitionに関するトピックは、FAQ Guideにあります。
Tutorialsには、いくつかのチュートリアル(3D姿勢の推定など)があります。
・OpenCVのSampleフォルダには、たくさんのサンプルコードがあります。
・OpenCVについて学ぶ最善の方法は、O'Reillyの書籍"Lerning OpenCV"をおすすめします。(訳注:日本語版 詳解OpenCVもあります。)


以上、インストールガイドの翻訳でした。