Xcode4 + MacOSX 10.7 でOpenNIのサンプルをビルドする
- 作者: 西林孝+ 小野憲史共著
- 出版社/メーカー: ラトルズ
- 発売日: 2011/08/26
- メディア: 単行本(ソフトカバー)
- 購入: 5人 クリック: 61回
- この商品を含むブログ (21件) を見る
上記の本とネットに載っている情報を参考にしながら実行しました。それにしてもXcode3に比べてXcode4のリファレンスが少ない。
macでOpenNIのサンプルをビルドする - MshrKatoの日記
OpenNI and Xcode 4 « Marcelo's Blog
Getting up and running with OpenNI and NITE on a Mac - davidbliss
Xcode, OpenNI, NITE, SensorKinectのインストールに関してはこちらを参考にして下さい。
MacでKinectを動かしてみた。 - nikuyoshiの日記
- プロジェクトの作成
Command Line Tool > C++プロジェクトを選択して下さい。
- 次のパスを、ヘッダ検索パスに追加します。
/usr/include/nite
/usr/include/ni
- 他のリンカフラグに、次のパスを追加します。
/usr/lib/libXnVNite_1_5_0.dylib
/usr/lib/libOpenNI.dylib
main.cppに次のコードを記述して、Kinectを接続した状態で実行します。
main.cpp
#include <iostream> #include <stdexcept> #include <XnCppWrapper.h> #include <XnVSessionManager.h> //設定ファイルのパス 自分の環境にあわせて書き換えて下さい。 const char* CONFIG_XML_PATH = "/Users/nikuyoshi/Documents/program/MotionCapture_1_0_0/SamplesConfig.xml"; int main (int argc, const char * argv[]) { try { xn::Context context; XnStatus rc = context.InitFromXmlFile(CONFIG_XML_PATH); if (rc != XN_STATUS_OK) { throw std::runtime_error(::xnGetStatusString(rc)); } XnVSessionManager sessionManager; rc = sessionManager.Initialize(&context, "Wave,Click", "RaiseHand"); if (rc != XN_STATUS_OK) { throw std::runtime_error(::xnGetStatusString(rc)); } std::cout << "Success" << std::endl; } catch (std::exception& ex) { std::cout << ex.what() << std::endl; } return 0; }
SamplesConfig.xml
<OpenNI> <Licenses> <License vendor="PrimeSense" key="0KOIk2JeIBYClPWVnMoRKn5cdY4="/> </Licenses> <Log writeToConsole="false" writeToFile="false"> <!-- 0 - Verbose, 1 - Info, 2 - Warning, 3 - Error (default) --> <LogLevel value="3"/> <Masks> <Mask name="ALL" on="true"/> </Masks> <Dumps> </Dumps> </Log> <ProductionNodes> <Node type="Image" name="Image1"> <Configuration> <MapOutputMode xRes="640" yRes="480" FPS="30"/> </Configuration> </Node> <Node type="Depth" name="Depth1"> <Configuration> <MapOutputMode xRes="640" yRes="480" FPS="30"/> </Configuration> </Node> <Node type="User" /> <Node type="Hands" /> <Node type="Gesture" /> </ProductionNodes> </OpenNI>
先程紹介した本にも書いてある通り、次の場合はエラーが起こります。
ちなみに、Xcode4はXcode3と比べて大分変更がされているようです。
Xcode 4 移行ガイド