Home > 技術 Archive

技術 Archive

OpenKinectを使ってみる(VC++2005にて)

Windows用のOpenKinectのソースとデモが
http://openkinect.org/wiki/Main_Page (Installation→Windowsの先のリンクらへん)
からDLできるので,さっそく自分のプログラムでKinectを使う実験開始.

Code
こんな感じにOpenKinectのソースを自分のプロジェクトに追加し,
サンプルを参考にコードを書いて実行

……が,なにやら数フレーム後には固まる
→ヒープが破壊されたとかいうメッセージボックス
→ブルースクリーンに突入 Oh…

DLしてきたデモ(v14)もちょっとウィンドウ位置を動かしたりして負荷をかけるとそんな感じの現象を起こす
(コンソールに「データを取りこぼした」感じの文章が出始めたら危険信号).
“OpenKinect”とかで検索しても,デモを動かしてみた世間の方々はそんなことを言ってないので
私の環境だけの問題なのだろうか……?

どうにもKinectListenerのコールバック内で処理時間がかかると問題発生するように思えるので
コールバック内でできるだけ処理を行わないように組むと安定したようだ.
(プロジェクトの設定も速度優先な内容にした)

KinectTest
カラー画像とDepth値が取得できた.(OpenKinectのソースコードはv16のものをDLして使用)
怖くてデバッグ版では実行できないけど.

↑の画像は単純に得られたDepth値と色相を線形に対応づけて描画しただけ.
(v14のデモはコードを見るとガンマカーブ?使って色をもっとうまいこと割り当てているように見える)
黒い個所はDepth値が取得できない個所.(Depth値=0x7FFが取得される)
室内でテストした感じだと,オクルージョン領域以外に,
・光が反射したり透過したりするもの
・近すぎるもの(50cmくらいか?)
はDepthが取れないようだ.あと,右側数ピクセル幅の領域も取れない.

Depth値は 0~0x7FE(2046) くらいの幅でもらえるのかと期待したのだが,
データ取得してみた範囲内では,380~1050 程度の値しか入ってこない感じだ.

(by nakiusagi3)

  • Comments (Close): 0
  • Trackbacks (Close): 0

Android砂時計

皆様,いつもお世話になりありがとうございます.
あっという間に秋が終わって一気に冬に突入しそうですね.

今日は,ケータイのうえで動くバーチャル「砂時計」の話題です.
これはAndroidケータイの処理能力を試してみてくて以前に開発したものです.

砂時計の1粒1粒の粒子について運動計算をしていて
それなりにリアルな砂時計となっています.

加速度センサーの情報も使っているので
ケータイを傾けた方向に粒が落ちていきますし,
左右にふったり上下にふると粒がつられて動きます.

粒子の弾性も考慮していて,弾性係数をいじると
ボールのように弾んだり弾き合ったりします.
砂時計というよりはパチンコ玉を砂の代わりに
使ったようなものに近いかもしれません.

JAVAで実装するとパフォーマンスが悪いので
NDK(Native Development Kit)の力を借りてCで実装しております.

こういう遊びながらの開発が意外なところで活躍したりするから面白いものです.

文責:鎌田智也

  • Comments (Close): 0
  • Trackbacks (Close): 0

Home > 技術 Archive

Search
Feeds
Authorized
奨学金支援制度
Meta

Return to page top