顯示具有 Week12 標籤的文章。 顯示所有文章
顯示具有 Week12 標籤的文章。 顯示所有文章

2015年6月15日 星期一

期末作業-進度

Let's share color!

構思
在Youtube找到影片:
2011大葉大學14屆視傳系形象長片-視界交互【點點人3主打】
https://www.youtube.com/watch?v=_8E6w0irTQE






看到這個影片產生了將它做成互動軟體的想法,偵測到人利用圓點印出,能多人一起使用,每個人都能有自己的顏色,並且能分享自己的顏色給對方





設計過程:

開始步驟:
  1. 如何印出點點人?
  2. 人如何有顏色?
  3. 如何互相變顏色?




步驟1.印出點點人






步驟2.人如何有顏色
先用矩陣宣告顏色

color[]       userClr = new color[]{ color(255,0,0),
                                     color(0,255,0),
                                     color(0,0,255),
                                     color(255,255,0),
                                     color(255,0,255),
                                     color(0,255,255)
                                   };


將人物的點點填入顏色
  blob_array[index] = 5; //矩陣裡六個顏色
        //fill(GRAY);  這邊是原本還沒加入彩色時先令他為灰階
         fill(userClr[ (userMap[index] - 1) % userClr.length ], 50);  //填入顏色矩陣的色彩

預設第一人為紅色

偵測到第二個人
預設第二人為綠色


第三人為藍色,第四人為黃色,第五人為紫紅色,第六人為淡藍色。









步驟3.如何互相改變顏色?
Let's share color!



當紅色的人碰到綠色的人時,碰到的部分會變成紅色,慢慢地整個人會變成紅色。
當紅色的人不再接觸後,原本的綠色人會變成紅色,而原本紅色的人會變成下一個顏色。











這就是分享顏色!!!!!!!!


2015年5月18日 星期一

import SimpleOpenNI.*; SimpleOpenNI openni; PImage imgBG; PGraphics imgMask; void setup() { size(1366, 737); openni = new SimpleOpenNI(this); openni.enableRGB(); openni.enableDepth(); openni.enableUser(); imgBG=loadImage("cute.jpg"); imgBG.resize(1366,737); imgMask=createGraphics(1366, 737); imgMask.beginDraw(); imgMask.background(0); imgMask.endDraw(); //imgMask.loadPixels(); /*for(int i=0;i<1366*737;i++) { imgMask.pixels[i]=color(0,0,255,80); } imgMask.updatePixels();*/ } void draw() { imgBG.mask(imgMask); image(imgBG,0,0); println(frameCount); openni.update(); image(openni.userImage(), 0, 0, 128,96); //image(imgMask,0,0); 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); }

抓取頭部位置

抓取頭部位置

追蹤頭


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_LEFT_HIP,pos);
          println(pos);
          println(userList[i]);
      }
  }
}
void onNewUser(SimpleOpenNI curContext, int userId)
{
  curContext.startTrackingSkeleton(userId);
}

抓頭的位置並新增圓球

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(640, 480);
  openni = new SimpleOpenNI(this);
  openni.enableRGB();
  openni.enableDepth();
  openni.enableUser();
  imgBG=loadImage("what.jpg");
  imgMask=createImage(1024,640,ARGB);
  imgMask.loadPixels();
  for(int i=0;i<1024*640;i++){
    imgMask.pixels[i]=color(0,0,255,220);
  }
  imgMask.updatePixels();
}
void draw(){
  image(imgBG,0,0);
  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);
}








import SimpleOpenNI.*;
SimpleOpenNI  openni;
PImage imgBG,imgMask;
void setup(){
  size(640, 480);
  openni = new SimpleOpenNI(this);
  openni.enableRGB();
  openni.enableDepth();
  openni.enableUser();
  imgBG=loadImage("what.jpg");
  imgMask=createImage(1024,640,ARGB);
  imgMask.loadPixels();
  for(int i=0;i<1024*640;i++){
    imgMask.pixels[i]=color(0,0,255,220);
  }
  imgMask.updatePixels();
}
void draw(){
  image(imgBG,0,0);
  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);
}
//程式碼
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++)
    {
      PVector pos = new PVector();
    openni.getJointPositionSkeleton(userList[i] , SimpleOpenNI.SKEL_LEFT_HIP,pos); 
    println(pos);
    println(userList[i]);
    }
}

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("00.jpg");
  imgMask = createImage(1024 , 640 , ARGB);
  imgMask.loadPixels();
  for(int i=0 ; i <1024*640 ; i++){
    imgMask.pixels[i] = color(0,0,255,220);
  }
  imgMask.updatePixels();
}
void draw(){
    //background(255);
    image(imgBG ,0,0);
    println(frameCount);
    openni.update();
    image(openni.userImage() , 0 , 0,640,480);
    image(imgMask,0,0);
    int [] userList = openni.getUsers();
    for(int i=0; i<userList.length;i++)
    {
      PVector pos = new PVector();
    openni.getJointPositionSkeleton(userList[i] , SimpleOpenNI.SKEL_LEFT_HIP,pos); 
    println(pos);
    println(userList[i]);
    }
}

void onNewUser(SimpleOpenNI curContext, int userId)
{
 curContext.startTrackingSkeleton(userId);
}



//第三個程式碼(電腦無法執行了)
import SimpleOpenNI.*;
SimpleOpenNI openni;
PImage imgBG  ;
PGraphics  imgMask;
void setup(){
   size(1024 , 640,P3D);
  openni = new SimpleOpenNI(this);
  openni.enableRGB();
  openni.enableDepth();
  openni.enableUser();
  imgBG = loadImage("00.jpg");
  imgMask = createGraphics(640,480);
  imgMask.beginDraw();
  imgMask.background(0);
  imgMask.endDraw();
}
void draw(){
    //background(255);
    imgBG.mask(imgMask);
    image(imgBG ,0,0);
    println(frameCount);
    openni.update();
    image(openni.userImage() , 0 , 0,64,48);
    //image(imgMask,0,0);
    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_LEFT_HIP,pos); 
        println(pos);
        println(userList[i]);
    }
}
    imgMask.endDraw();
}
void onNewUser(SimpleOpenNI curContext, int userId)
{
 curContext.startTrackingSkeleton(userId);
}

第12週課堂練習



找到兩個人,上不同顏色且可以在頭上畫圈  
找到多人的頭
用滑鼠擦玻璃
用身體擦玻璃

01160873_林瑋真

import SimpleOpenNI.*; SimpleOpenNI openni; PImage imgBG; PGraphics imgMask; void setup() { size(1366, 737); openni = new SimpleOpenNI(this); openni.enableRGB(); openni.enableDepth(); openni.enableUser(); imgBG=loadImage("cute.jpg"); imgBG.resize(1366,737); imgMask=createGraphics(1366, 737); imgMask.beginDraw(); imgMask.background(0); imgMask.endDraw(); //imgMask.loadPixels(); /*for(int i=0;i<1366*737;i++) { imgMask.pixels[i]=color(0,0,255,80); } imgMask.updatePixels();*/ } void draw() { imgBG.mask(imgMask); image(imgBG,0,0); println(frameCount); openni.update(); image(openni.userImage(), 0, 0, 128,96); //image(imgMask,0,0); 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); }

Kinect _simpleOpenNI

開啟openni 專案


開啟深度值畫面


抓人體部位,SKEL_RIGHT_HIP、SKEL_HEAD


擦玻璃遊戲!!!!!!


用右手擦玻璃!!



第十二週

用手類似擦玻璃把背景圖片秀出來
我覺得這個滿好玩的很有趣

----------------------------------------------------------------------------程式碼如下
import SimpleOpenNI.*;
SimpleOpenNI  openni;
PImage imgBG;
PGraphics imgMask;
void setup()
{
  size(1366, 737);
  openni = new SimpleOpenNI(this);
  openni.enableRGB();
  openni.enableDepth();
  openni.enableUser();
  imgBG=loadImage("dog.jpg");
  imgBG.resize(1366,737);
  imgMask=createGraphics(1366, 737);
  imgMask.beginDraw();
  imgMask.background(0);
  imgMask.endDraw();
//imgMask.loadPixels();
/*for(int i=0;i<1366*737;i++)
{
  imgMask.pixels[i]=color(0,0,255,80);
}
imgMask.updatePixels();*/
}

void draw()
{
  imgBG.mask(imgMask);
  image(imgBG,0,0);
  println(frameCount);
  openni.update();
  image(openni.userImage(), 0, 0, 128,96);
  //image(imgMask,0,0);
  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);
}

week12,00160530_吳坤曄

今天的重點: (1) 體感扭屁股, (2) 體感追蹤頭, (3) 體感擦玻璃
0. 先把 UserMap 秀出來
1. 先求能把關節找出來 (記得要把 onNewUser() 寫好, 讓新的使用者能被追蹤)
2. 把追到的關節座標, 畫個白色圓形




3.擦玻璃


01160873_林瑋真


import SimpleOpenNI.*;
SimpleOpenNI openni;
size(640, 480);
void setup() {
openni.enableRGB();
openni = new SimpleOpenNI(this);

openni.enableDepth(); openni.enableUser(); }
image(openni.userImage(), 0, 0, 640,480);
void draw() { background(255); openni.update();
for(int i = 0;i<userList.length;i++)
int[] userList = openni.getUsers(); { if(openni.isTrackingSkeleton(userList[i])){
openni.getJointPositionSkeleton(userList[i],SimpleOpenNI.SKEL_HEAD, pos);
PVector pos = new PVector(); 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(1366, 737); openni = new SimpleOpenNI(this); openni.enableRGB(); openni.enableDepth(); openni.enableUser(); imgBG=loadImage("cute.jpg"); imgMask=createImage(1366, 737,ARGB); imgMask.loadPixels(); for(int i=0;i<1366*737;i++) { imgMask.pixels[i]=color(0,0,255,80); } imgMask.updatePixels(); } void draw() { image(imgBG,0,0); println(frameCount); openni.update(); image(openni.userImage(), 0, 0, 128,96); 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); }