Ich werde 2 Schichten (Tiefenbild von Kinect bzw. eine Maske) in meinem Bearbeitungsprojekt zeigen. In diesem Projekt werde ich Bereiche, für die kein Benutzer verfügbar ist, mithilfe einer Maske ausblenden. Beachten Sie, dass "mask" seine Pixel aus einem Film namens "movie2" in meinem Code bezieht.
Gibt es eine Möglichkeit, Ränder von Benutzern zu verwischen, indem die Deckkraft von Maskenrahmen reduziert wird?Wie kann die Deckkraft von Masken (transparentes Bild) in Processing reduziert werden?
Hier ist mein Code:
import SimpleOpenNI.*;
PImage mask,depth;
SimpleOpenNI kinect;
int[] userMap;
void setup(){
kinect = new SimpleOpenNI(this);
size(640,480);
kinect.enableDepth();
kinect.enableUser();
}
void draw(){
kinect.update();
depth=kinect.depthImage();
userMap = kinect.userMap();
image(depth,0,0);
mask=loadImage("mask.jpg");
mask.loadPixels();
for (int y=0; y<480; y++) {
for (int x=0; x<640; x++) {
int index = x + y *640;
if (userMap[index]!= 0) {
mask.pixels[index]=color(0,0,0,0);
}
}
}
mask.updatePixels();
image(mask,0,0);
}
Sicher, iterieren nur die Randpixel und setzen ihre Opazität. Welcher Teil davon gibt dir Ärger? Kannst du eine [mcve] zusammenstellen, die das auf einem einzigen fest codierten Bild anstelle eines Films versucht? –
Sicher, der Code wurde aus Gründen der Übersichtlichkeit bearbeitet. –