2015年5月11日 星期一

Week12

追蹤頭部
import SimpleOpenNI.*; SimpleOpenNI openni; void setup() { size(640, 480); openni = new SimpleOpenNI(this); openni.enableRGB(); openni.enableDepth(); openni.enableUser(); } void draw() { background(255); openni.update(); image(openni.userImage(), 0, 0, 640,480); int[] userList = openni.getUsers(); for(int i = 0;i<userList.length;i++) { if(openni.isTrackingSkeleton(userList[i])){ PVector pos = new PVector(); openni.getJointPositionSkeleton(userList[i],SimpleOpenNI.SKEL_HEAD, pos); println(pos); fill(255); ellipse(320+pos.x/3, 240-pos.y/3, 50,50); } } } void onNewUser(SimpleOpenNI curContext, int userId) { curContext.startTrackingSkeleton(userId); }

遮罩
import SimpleOpenNI.*;
SimpleOpenNI openni;
PImage imgBG,imgMask;
void setup()
{
  size(1024,640);
  openni= new SimpleOpenNI(this);
  openni.enableRGB();
  openni.enableDepth();
  openni.enableUser();
  imgBG=loadImage("1.gif");
  imgMask=createImage(1024,640,ARGB);
  imgMask.loadPixels();
  for(int i=0;i<1024*640;i++)
  {
    imgMask.pixels[i]=color(0,255,255,220);
  }
  imgMask.updatePixels();
}
void draw()
{
  //background(255);
  image(imgBG,0,0);
  println(frameCount);
  openni.update();
  image(openni.userImage(),0,0,64,48);
  image(imgMask,0,0);
  int[] userList=openni.getUsers();
  for(int i=0;i<userList.length;i++)
  {
    if(openni.isTrackingSkeleton(userList[i]))
    {
      PVector pos=new PVector();
      openni.getJointPositionSkeleton(userList[i],SimpleOpenNI.SKEL_HEAD,pos);
      println(pos);fill(255);ellipse(320+pos.x/3,240-pos.y/3,50,50);
    }
  }
}
void onNewUser(SimpleOpenNI curContext,int userId)
{
  curContext.startTrackingSkeleton(userId);
}

擦玻璃

PImage imgBG;
PGraphics imgMask;
void setup(){
  size(640,480);
  imgBG=loadImage("1.gif");
  imgBG.resize(640,480);
  imgMask = createGraphics(640,480);
  imgMask.beginDraw();
  imgMask.background(0);
  imgMask.endDraw();
}

void draw(){
  imgBG.mask(imgMask);
  image(imgBG,0,0);
}

void mouseDragged(){
  imgMask.beginDraw();
  imgMask.fill(255);
  imgMask.ellipse(mouseX,mouseY,100,100);
  imgMask.endDraw();
}

體感擦玻璃
import SimpleOpenNI.*;
SimpleOpenNI  openni;
PImage imgBG;
PGraphics imgMask;
void setup()
{
  size(640, 480);
  openni = new SimpleOpenNI(this);
  openni.enableRGB();
  openni.enableDepth();
  openni.enableUser();
  imgBG=loadImage("1.gif");
  imgBG.resize(640,480);
  imgMask=createGraphics(640, 480);
  imgMask.beginDraw();
  imgMask.background(0);
  imgMask.endDraw();
}

void draw()
{
  imgBG.mask(imgMask);
  image(imgBG,0,0);
  println(frameCount);
  openni.update();
  image(openni.userImage(), 0, 0, 64,48);
  int[] userList = openni.getUsers();
  imgMask.beginDraw();
  imgMask.noStroke();
  imgMask.fill(255);
  for(int i = 0;i<userList.length;i++)
  {
    if(openni.isTrackingSkeleton(userList[i])){
      PVector pos = new PVector();
      openni.getJointPositionSkeleton(userList[i],SimpleOpenNI.SKEL_RIGHT_HAND, pos);
      imgMask.ellipse(320+pos.x/3, 240-pos.y/3, 50,50);
    }
  }
  imgMask.endDraw();
  
}
void onNewUser(SimpleOpenNI curContext, int userId)
{
  curContext.startTrackingSkeleton(userId);
}

沒有留言:

張貼留言