2014-02-14 58 views
1

我已經安裝了openni2.2,nite2.2和kinect SDK 1.6以及Simpleopenni庫進行處理。一切工作正常,除了紅外圖像 - 它根本就不存在。這真的很奇怪,因爲同時我可以清楚地看到深度圖像(並且深度圖像在邏輯上需要紅外熱像儀和投影儀工作才能運行)。所以我認爲驅動程序或軟件存在問題?我想用kinect作爲紅外相機。請幫助,下面我附上我的測試代碼:Kinect infra圖像沒有顯示 - 爲什麼?

/* -------------------------------------------------------------------------- 
* SimpleOpenNI IR Test 
* -------------------------------------------------------------------------- 
* Processing Wrapper for the OpenNI/Kinect library 
* http://code.google.com/p/simple-openni 
* -------------------------------------------------------------------------- 
* prog: Max Rheiner/Interaction Design/zhdk/http://iad.zhdk.ch/ 
* date: 02/16/2011 (m/d/y) 
* ---------------------------------------------------------------------------- 
*/ 

import SimpleOpenNI.*; 


SimpleOpenNI context; 

void setup() 
{ 
    context = new SimpleOpenNI(this); 

    // enable depthMap generation 
    if(context.enableDepth() == false) 
    { 
    println("Can't open the depthMap, maybe the camera is not connected!"); 
    exit(); 
    return; 
    } 

    // enable ir generation 
    if(context.enableIR() == false) 
    { 
    println("Can't open the depthMap, maybe the camera is not connected!"); 
    exit(); 
    return; 
    } 

    background(200,0,0); 
    size(context.depthWidth() + context.irWidth() + 10, context.depthHeight()); 
} 

void draw() 
{ 
    // update the cam 
    context.update(); 

    // draw depthImageMap 
    image(context.depthImage(),0,0); 

    // draw irImageMap 
    image(context.irImage(),context.depthWidth() + 10,0); 
} 
+0

圖像顯示錯誤:http://i.imgur.com/jzdqbXN.jpg?1 – doku

回答

0

我有完全相同的問題。 這不是一個解決方案,但我可以從Kinect的得到一個紅外圖像最接近的是從深度圖像 這soltuion得到的點雲是在這裏

import SimpleOpenNI.*; 

import processing.opengl.*; 

SimpleOpenNI kinect; 

void setup() 
{ 

    size(1024, 768, OPENGL); 

    kinect = new SimpleOpenNI(this); 

    kinect.enableDepth(); 

} 

void draw() 
{ 

    background(0); 

    kinect.update(); 
    image(kinect.depthImage(),0,0,160,120);//check depth image 

    translate(width/2, height/2, -1000); 

    rotateX(radians(180)); 

    stroke(255); 

    PVector[] depthPoints = kinect.depthMapRealWorld(); 

    //the program get stucked in the for loop it loops 307200 times and I don't have any points output 

    for(int i = 0; i < depthPoints.length ; i+=4)//draw point for every 4th pixel 
    { 

    PVector currentPoint = depthPoints[i]; 
    if(i == 0) println(currentPoint); 
    point(currentPoint.x, currentPoint.y, currentPoint.z); 
    } 

} 
+0

謝謝,但問題是我想看到並跟蹤紅外線 - 在深度視圖中,led是可見的黑色縫隙,但是一旦我覆蓋kinect紅外線發射器,它就會消失... – doku

0

這做工作:

context.enableIR(1,1,1); 
+0

多孔莫利 - >他是對的(爲什麼是-1?)這是我的完整的代碼,僅供參考: –

0

你能夠捕捉紅外線流,但你不能看到它?

然後問題可能是RANGE(它應該在[0,255])。

我在Python和C++中遇到了這個問題;我通過將數組除以範圍(max-min),然後將所有條目乘以255來解決它。

0

user3550091是正確的! 僅供參考,這裏是我完整的工作代碼(處理+ OpenNI):

import SimpleOpenNI.*; 
SimpleOpenNI context; 
void setup(){ 
    size(640 * 2 + 10, 480); 
    context = new SimpleOpenNI(this); 
    if(context.isInit() == false){ 
    println("fail"); 
    exit(); 
    return; 
    } 
    context.enableDepth(); 

    // enable ir generation 
    //context.enableIR(); old line 
    context.enableIR(1,1,1); //new line 

    background(200,0,0); 
} 

void draw(){ 
    context.update(); 
    image(context.depthImage(),context.depthWidth() + 10,0); 

    image(context.irImage(),0,0); 
}