GUST NOTCH? DIARY

OpenNI を試してみた

以下のところを参考にさせていただきました。

準備したもの。

  • openni-win32-1.0.0.23.exe (here)
  • nite-win32-1.3.0.17.exe (here)
  • avin2-SensorKinect-4e91f68.zip (here)

OpenNI のサイトを見ても、インストールの仕方って書いてないですよね? ドライバについてはリンクもされてないし。みなさんどこから情報を得ているのかしら?

  • libfreenect のドライバの削除

まずは、先日入れたドライバを削除する。Kinect を接続すると、デバイスマネージャ上に libusb-win32 device があり、その下に Xbox NUI Audio, Xbox NUI Camera, Xbox NUI Motor の3つがある。これを右クリックで削除する。削除する順番は Motor を最後にした方がいいかも。最初に Motor を削除すると、Audio と Camera が見えなくなった。
私の場合、Motor を削除したら USB Device というのが「!」つきで現れたのでこれも削除。

  • avin2-SensorKinect ドライバを入れる

Kinect の USB を一回抜いてから挿し直す。「その他のデバイス」として Xbox NUI Motor が現れるので、右クリックから「ドライバの更新」でウィザードを実行。「一覧または特定の場所からインストールする(詳細)」を選び、「検索をしないでドライバをインストールする」から、「ディスクを使用」で zip を展開した中にある Platform\Win32\Driver フォルダを指定する。
上記のサイトにも書いてあるが、ここでドライバを検索させてしまうと、何度やっても元の libusb-win32 device の下に以前のドライバが入ってしまう。レジストリかどこかに情報が残っているらしく、手動で libusb0.sys と libusb0.dll を削除しても、これらと共に復活してしまう。
Audio ドライバはまだないので、これはキャンセル。Camera ドライバは Motor と同じように同じところを指定する。結果、PrimeSensor というカテゴリに、Kinect Motor と Kinect Camera が出来る。Audio ドライバは libusb の下に「!」つきで残る。そのままで問題ないはずだが、気持ち悪かったら「検索して」ドライバを入れると前のドライバが Xbox NUI Audio として入って「!」は取れる。

  • OpenNI をインストール

openni-win32-1.0.0.23.exe を実行して、デフォルトでいれる。

  • SensorKinect-Win32-5.0.0.exe をインストール

avin2-SensorKinect-4e91f68.zip を展開した中の Bin の中にあるのでこれを実行。これもデフォルトのままで。

  • NITE をインストール

nite-win32-1.3.0.17.exe を実行。途中でシリアルを求められるので、OpenNI のサイトに書いてある 0KOIk2JeIBYClPWVnMoRKn5cdY4= を入れる。
以上で終了。
サンプルは C:\Program Files\OpenNI\Samples\Bin\Release にある。骨格抽出と追跡のデモは NiUserTracker.exe です。下の画像は NiViewer.exe によるもの。

ドキュメントは C:\Program Files\OpenNI\Documentation\OpenNI.chm のヘルプファイルに Tutorial と Sample があって詳しい。VisualStudio には、C:\Program Files\OpenNI\Include と C:\Program Files\OpenNI\Lib を追加しておくといいかも。リンクに必要なものは openni.lib。最新の Platform SDK を入れとけとも書いてある。NiSimpleViewer をビルドしてみたら、既存の環境では OpenGL の定数が定義されていなかった。ソースについてきているヘッダファイルを先に読み込むようにしたら通った。
とりあえず、カラー画像と距離画像を取得する方法は分かった。NiSimpleViewer だとこれらがきれいに重ねあわされてるんだけど、オフセットで平行移動して線形に変換すればいいように見える。詳しくはまた後で見てみる。