合計 昨日 今日

アバター
Dixq (管理人)
管理人
 
記事: 1484
登録日時: 2010年10月12日(火) 20:16
お住まい: 北海道札幌市
日記: 日記を見る (560)
日記
- 8月 2017
「龍神録2プログラミングの館」開設 (22)
   2017年8月20日(日) 16:11
地獄ナウ (6)
   2017年8月14日(月) 11:25
今日は原爆記念日 (4)
   2017年8月06日(日) 07:48
四聖龍神録2動画公開! (0)
   2017年8月04日(金) 16:40

+ 7月 2017
+ 6月 2017
+ 5月 2017
+ 4月 2017
+ 3月 2017
+ 2月 2017
+ 1月 2017
+ 12月 2016
+ 11月 2016
+ 10月 2016
+ 9月 2016
+ 8月 2016
+ 7月 2016
+ 6月 2016
+ 5月 2016
+ 4月 2016
+ 3月 2016
+ 2月 2016
+ 1月 2016
+ 12月 2015
+ 11月 2015
+ 10月 2015
+ 9月 2015
+ 8月 2015
+ 7月 2015
+ 6月 2015
+ 5月 2015
+ 4月 2015
+ 3月 2015
+ 2月 2015
+ 1月 2015
+ 12月 2014
+ 11月 2014
+ 10月 2014
+ 9月 2014
+ 8月 2014
+ 7月 2014
+ 6月 2014
+ 5月 2014
+ 4月 2014
+ 3月 2014
+ 2月 2014
+ 1月 2014
+ 12月 2013
+ 11月 2013
+ 10月 2013
+ 9月 2013
+ 8月 2013
+ 7月 2013
+ 6月 2013
+ 5月 2013
+ 4月 2013
+ 3月 2013
+ 2月 2013
+ 1月 2013
+ 12月 2012
+ 11月 2012
+ 10月 2012
+ 9月 2012
+ 8月 2012
+ 7月 2012
+ 6月 2012
+ 5月 2012
+ 4月 2012
+ 3月 2012
+ 2月 2012
+ 1月 2012
+ 12月 2011
+ 11月 2011
+ 10月 2011
+ 9月 2011
+ 8月 2011
+ 7月 2011
+ 6月 2011
+ 5月 2011
+ 4月 2011
+ 3月 2011
+ 2月 2011
+ 1月 2011
+ 12月 2010
+ 11月 2010
+ 10月 2010
フォロー
カテゴリー
日常
1 記事

KinectとOpenNI

パーマリンクby Dixq (管理人) on 2011年3月09日(水) 23:12

kinectでやろうとしたことと全く同じ事をニコニコに先にうpされたので意気消沈してましたけど、勉強を引き続きやってます。

何がしんどいってkinectをハックして使うための参考書やら参考サイトがあるわけじゃないし、
あってもほとんど英語だから頑張って英語読むか、サンプルプログラムを見て理解するしかない・・。
そして行列計算やOpenGLのコードがわんさか出てきます。

それに最近帰るのが遅いから家に帰って夕飯食べて風呂入ったら寝る時間・・学ぶ時間が無い(T_T

とりあえず忘れないうちに覚え書き。

GLを使うとコードが長くなるので、CVで試してみました。
参考にしたサンプルプログラムから更に不要な部分を限界まで削った最小プログラムがこちら。

コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <cv.h>
#include <highgui.h>
#include <XnCppWrapper.h>
 
#pragma comment(lib,"C:/Program files/OpenNI/Lib/openNI.lib")
#define SAMPLE_XML_PATH "C:/Program Files/OpenNI/Data/SamplesConfig.xml"
using namespace cv;
using namespace xn;
 
int main(){
    Context context;
    context.InitFromXmlFile(SAMPLE_XML_PATH);
 
    DepthGenerator depth;
    context.FindExistingNode(XN_NODE_TYPE_DEPTH, depth);
   
    ImageGenerator image;
    context.FindExistingNode(XN_NODE_TYPE_IMAGE, image);
 
    DepthMetaData depthMD;
    ImageMetaData imageMD;
 
    Mat depthshow, show;
    int key = 0;
    while ( key != 'q' ){
        context.WaitAnyUpdateAll();
 
        image.GetMetaData(imageMD);
        depth.GetMetaData(depthMD);
               
        Mat imni(480,640,CV_8UC3,(uchar*)imageMD.WritableData());
        Mat depth16(480,640,CV_16SC1,(unsigned short*)depthMD.WritableData());
       
        cvtColor(imni,show,CV_RGB2BGR);    
        depth16.convertTo(depthshow,CV_8U,-255/4096.0,255);
 
        imshow("depth",depthshow);
        imshow("image",show);
        key = waitKey(33);
    }
    context.Shutdown();
    return 0;
}


まずコンテキストはXMLファイルから生成するようです。
本サンプルはメタデータとしてRGBデータと、depthデータを取ってきています。
InitFromXmlFileでコンテキストを生成したら、rgm imageとdepthをFindExistingNodeします。

この関数の実体を見てみると
XnStatus FindExistingNode(XnProductionNodeType type, ProductionNode& node) const
となっていました。ProductionNodeクラスをアドレス参照していることに注意。

WaitAnyUpdateAllで情報を更新します。

image.GetMetaData(imageMD);
depth.GetMetaData(depthMD);

でimage, depthそれぞれのメタデータを取得します。

Mat imni(480,640,CV_8UC3,(uchar*)imageMD.WritableData());
Mat depth16(480,640,CV_16SC1,(unsigned short*)depthMD.WritableData());

は、きっと取得したデータをCVで使える行列に変換しておるのでしょう。
CVのMatクラスは使った事無いので後で勉強しておくことにします。

depth16.convertTo(depthshow,CV_8U,-255/4096.0,255);

はメタデータを画像データに変換してるのかな?
どっちにしてもMatクラスを勉強しなきゃ
後は

imshow("depth",depthshow);
imshow("image",show);

で表示してるだけですね。
こんな短くスマートにかけるのはCVならではですね~。
実行したらこうなります。

画像

いや~綺麗にdepthが取れるものですね。

コメント数: 2 閲覧数: 21875
コメント

Re: KinectとOpenNI

パーマリンクby lbfuvab on 2011年3月10日(木) 02:03

私は3Dに憧れつつも挫折した組なので、こういうのは凄く好きです。

こういうのを使って、部屋に初音ミ○や神威が○ぽなんかを動かせそうですねw

P.S.
wiiのモーションセンサーを流用出来たら便利なんだけどなぁ、と思う今日この頃。
けど、あのセンサーはリモコンの中なんだなぁ・・・
アバター
lbfuvab
 
記事: 72
登録日時: 2010年10月18日(月) 20:20
日記: 日記を見る (48)

Re: KinectとOpenNI

パーマリンクby Dixq (管理人) on 2011年3月13日(日) 14:02

動かせますよ~!
週末はそれやろうと思ってたのに地震の影響でネットにつながらなくてなみだ目です:;
被災地の方の苦労と比べたらそんなこと言っていられませんが・・。
アバター
Dixq (管理人)
管理人
 
記事: 1484
登録日時: 2010年10月12日(火) 20:16
お住まい: 北海道札幌市
日記: 日記を見る (560)

オンラインデータ

登録ユーザー: SAI, みけCAT