とりあえず、OpenCVのサイトにMacOSXでOpenCVをインストールするにはMacPortsを使うのが簡単ということなので、MacPortsをインストールして、openCVをインストール。
すると、依存関係にある大量のアプリやらライブラリが同時にインストールされて、/usr/以下や/opt/local/いかに同じようなアプリが併存状態になってしまい、何となく気持ち悪い状態になります。
Xcodeの設定で、
追加>既存のファイルで/opt/local/libから
- libcv.dylib
- libcvaux.dylib
- libcxcore.dylib
- libhighgui.dylib
を選んで追加
ターゲットの情報>ビルド>検索パスに
- ヘッダ検索パス /opt/local/include
- ライブラリ検索パス /opt/local/lib
アーキテクチャ
・x86_64
を選択
でコンパイルすると、うまくいかなかった。
OpenCVは64ビット用のライブラリに対して、
$ file /opt/local/lib/libcv.dylib /opt/local/lib/libcv.dylib: Mach-O 64-bit dynamically linked shared library x86_64
ARToolKitは32ビットでコンパイルしてしまったらしい
$ file libAR.a libAR.a: Mach-O universal binary with 2 architectures libAR.a (for architecture i386): current ar archive random library libAR.a (for architecture ppc): current ar archive random library
ARToolKitを64ビットでもコンパイルするには、ARToolKitをコンパイルする用のプロジェクトで、それぞれのライブラリのターゲット
- AR
- ARgsub_lite
- ARgsub
- ARgsubUtil
- ARMulti
の情報>ビルド>アーキテクチャ を
Standard (32/64-bit Universal)
にセットしてビルドすると良いらしい。
$ file libAR.a libAR.a: Mach-O universal binary with 3 architectures libAR.a (for architecture x86_64): current ar archive random library libAR.a (for architecture i386): current ar archive random library libAR.a (for architecture ppc): current ar archive random library
問題は、ARvideoだけはアーキテクチャをStandard (32/64-bit Universal)でビルドすると失敗する。64ビットではうまくいかないらしい。
すると、カメラから画像を取得する部分は、OpenCVのライブラリから取得するようにしないと良くないということらしい。
プログラムがコンパイル、リンクできるようになったところで、今度は、OpenCVのライブラリから取得した画像を、ARToolKitの表示関数で出力するには、画像の変換が必要らしいが、Windowsの方法は、上記の本の通りだが、Macはどうなんだろう?
上記本に書かれているような手段で、調べてみると、
- OpenCVでカメラから取得できる画像がBGR(変更する方法があるかもしれないけど、私は分かりません・・・)
- MacOSX版のARToolKitの画像のビットの並びは、ARGB
らしい。
そして残念なことに、cvCvtColor関数でBGRからARGBへの変換は定義されてないようだ(これも見つけられていないだけかも)。
しようがないので、地道に下の感じに変換してやる
frameImage = cvQueryFrame(capture);
// cvCvtColor(frameImage, imageAR, CV_BGR2ARGB);
for (int x=0; xwidth; x++) {
for (int y=0; yheight; y++) {
imageAR->imageData[y*frameImage->widthStep+4*x] = 255;
imageAR->imageData[y*frameImage->widthStep+4*x+1] = frameImage->imageData[y*frameImage->widthStep+3*x+2];
imageAR->imageData[y*frameImage->widthStep+4*x+2] = frameImage->imageData[y*frameImage->widthStep+3*x+1];
imageAR->imageData[y*frameImage->widthStep+4*x+3] = frameImage->imageData[y*frameImage->widthStep+3*x];
}
}
するとめでたく、ARToolKitのargDispImage関数でOpenCVのcvQueryFrameで取得した画像を表示できた。
<ここに至るまで>
- Mac買ったから、これで開発の勉強しよう!!
- OpenGLとかARToolKitとかも勉強したいな〜
- おっ? 書籍だと大抵、Windowsでの開発が説明されている
- 頑張ってMacでやってみたけど、まだまだMacに慣れない+Windowsと勝手が違う
- ARToolKitとかなんとかは、おとなしく、windowsで勉強した方が良いかなあ。。。 ← いまここ・・・
この本で勉強してみました。
3Dキャラクターが現実世界に誕生! ARToolKit拡張現実感プログラミング入門 価格:¥ 3,129(税込) 発売日:2008-09-17 |
0 件のコメント:
コメントを投稿