Пользовательская карта Smooth Kinect по обработке 3 - PullRequest
0 голосов
/ 09 мая 2018

Здравствуйте, у меня есть следующий скрипт, который определяет силуэт пользователя (сделан с помощью SimpleOpenNI). Я поместил глубину изображения на холст для изменения размера видео (потому что это по умолчанию 640x480). Теперь я хочу сгладить силуэт пользователя, но я не знаю, как это сделать. Есть идеи? Спасибо;)

Изображение здесь: https://i.stack.imgur.com/TurC3.png

Kinect v1 - Обработка v3

import processing.opengl.*;
import SimpleOpenNI.*; 
import gab.opencv.*;

SimpleOpenNI kinect;
OpenCV opencv;

PGraphics canvas;
PImage userImage;
int userID;
int[] userMap;
PImage depthImage;
int c;

void setup() {
  frameRate(30);
  smooth(4);
  fullScreen();
  pixelDensity(2);
  background(255); 
  kinect = new SimpleOpenNI(this);
  kinect.setMirror(true);
  kinect.enableRGB();
  kinect.enableDepth();
  kinect.enableUser();

  canvas = createGraphics(640, 480, JAVA2D);
  depthImage = kinect.depthImage();

  opencv = new OpenCV(this, depthImage);  

}

void draw() {
  background(255);
  canvas.beginDraw();
  silhouette();
  canvas.clear();
  canvas.endDraw();
}

void onNewUser(int uID) {
  userID = uID;
  println("tracking");
}

void silhouette() {
  kinect.update();

  depthImage.loadPixels();
  // Rileva utenti
  if (kinect.getNumberOfUsers() > 0) {  
    // Find out which pixels have users in them
    userMap = kinect.userMap();
    //canvas.image(depthImage, 0, 0);
    canvas.loadPixels();  

    for (int i = 0; i < userMap.length; i++) {  
      // if the current pixel is on a user
      if (userMap[i] != 0) {

        c = userMap[i];
        canvas.pixels[i] = color(255, 0, 255); //make the silhouette pink
      }
    }
     // mostra il nuovo array di pixel
     updatePixels();
   }
  // Posiziona la canvas, resize canvas
  image(canvas, 0, 0, width*2, height*4);

}
...