Здравствуйте, у меня есть следующий скрипт, который определяет силуэт пользователя (сделан с помощью 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);
}