处理,简单的kinect应用程序不开始活动

时间:2013-06-25 14:09:24

标签: kinect processing simple-openni

我想在处理中做一个简单的kinect应用程序,我只想在kinect检测到骨架时,显示一个简单的jpeg图像,就是这样。我写了一些代码,但是当有人出现在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); 
}

1 个答案:

答案 0 :(得分:1)

您尚未为OpenNI用户事件设置回调。 此外,如果您只想在检测到某人时显示图像,则实际上不需要跟踪骨架:只需使用场景图像即可。您可以在不跟踪骨架的情况下获取有关用户位置的一些信息,例如用户的质心。 这样,如果您实际上不需要骨架数据,那么您将拥有更简单,更快速的应用程序。

这是一个基本的例子:

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样本,这是我去年举办的研讨会的一部分。