2013-06-25 1 views
0

처리 과정에서 간단한 kinect 응용 프로그램을 만들고 싶습니다. kinect가 skeleton을 감지하고 간단한 jpeg 이미지 만 표시하면됩니다. 나는 어떤 코드를 썼다. 그러나 모든 것이 작동한다. 누군가 kinect 앞에 나타나면, 아무 일도 일어나지 않는다. 누군가 나를 도울 수 있는가? 이 내 코드입니다 : 당신은 OpenNI 사용자 이벤트에 대한 설치되지 않았 콜백이처리 중, 간단한 kinect 응용 프로그램이 이벤트를 시작하지 않습니다.

import SimpleOpenNI.*; 

SimpleOpenNI kinect; 

void setup() 
{ 
    // Começar o evento 
    kinect = new SimpleOpenNI(this); 

    // Ativar o RGB 
    kinect.enableRGB(); 

    background(200,0,0); 


    // Criar a janela do tamanho do dephMap 
    size(kinect.rgbWidth(), kinect.rgbHeight()); 
} 

void draw() 
{ 
    // update da camera 
    kinect.update(); 

    // mostrar o depthMap 
    image(kinect.rgbImage(),0,0); 

    // Definir quantidade de pessoas 
    int i; 
    for (i=1; i<=10; i++) 
    { 
    // Verificar presença da pessoa 
    if(kinect.isTrackingSkeleton(i)) 
    { 
     mostrarImagem(); // draw the skeleton 
    } 
    } 
} 

// Mostrar a imagem 
void mostrarImagem() 
{ 
PImage img; 
img = loadImage("proverbio1.jpg"); 
image(img, 0, 0); 
} 
+0

잠깐, 몇 번이라도 호출되는 함수가 아니라 setup()에서 이미지를로드하십시오. 결국 메모리 오류가 발생합니다. –

+0

Kinect가 골격을 추적하는 곳 안쪽에 뭔가를 인쇄하여 실제로 작동하는지 확인할 수 있습니까? –

+0

네, 시도해 보았습니다.하지만 당신이 저에게하라고 한 것을 설치에 넣었습니다. 이제는 모두 작동하고 있습니다. 감사합니다. :) – user2438683

답변

1

. 누군가가 감지되었을 때 단순히 이미지를 표시하려면 실제로 뼈대를 추적 할 필요가 없습니다. 간단히 장면 이미지를 사용하십시오. 사용자의 질량 중심과 같이 골격을 추적하지 않고도 사용자의 위치에 대한 정보를 얻을 수 있습니다. 실제로 해골 데이터가 필요하지 않은 경우이 방법을 사용하면 더 간단하고 빠른 응용 프로그램을 사용할 수 있습니다. 여기에 기본 예제

는 :

import SimpleOpenNI.*; 

SimpleOpenNI context;//OpenNI context 
PVector pos = new PVector();//this will store the position of the user 
int user;//this will keep track of the most recent user added 
PImage sample; 

void setup(){ 
    size(640,480); 
    context = new SimpleOpenNI(this);//initialize 
    context.enableScene();//enable features we want to use 
    context.enableUser(SimpleOpenNI.SKEL_PROFILE_NONE);//enable user events, but no skeleton tracking, needed for the CoM functionality 
    sample = loadImage("proverbio1.jpg"); 
} 
void draw(){ 
    context.update();//update openni 
    image(context.sceneImage(),0,0); 
    if(user > 0){//if we have a user 
    context.getCoM(user,pos);//store that user's position 
    println("user " + user + " is at: " + pos);//print it in the console 
    image(sample,0,0); 
    } 
} 
//OpenNI basic user events 
void onNewUser(int userId){ 
    println("detected" + userId); 
    user = userId; 
} 
void onLostUser(int userId){ 
    println("lost: " + userId); 
    user = 0; 
} 

당신은 내가 작년에 열린 워크숍의 일부인이 Kinect article에 몇 가지 편리한 SimpleOpenNI 샘플을 볼 수 있습니다.