Même si j'ai répondu à la question il y a plus de six mois sur le site QA, j'étais triste que personne ne l'ait vu, donc je la posterai.
Je veux lire des données d'image avec Traitement et rendre une zone arbitraire transparente avec une quantité arbitraire de transmission.
Le code est ci-dessous. C'est une technique délicate pour extraire la couleur de chaque pixel de l'image, définir la quantité de transparence, puis dessiner chaque pixel. J'utilise l'ellipse pour dessiner des pixels, mais vous pouvez également utiliser rect ou spot. .. Lorsque vous utilisez un spot, le paramètre de transparence utilise le contour au lieu du remplissage.
PImage img;
int imgWidth, imgHeight;
//Gamme que vous voulez voir à travers
int xstart = 100;
int xstop = 200;
int ystart = 50;
int ystop = 100;
//Quantité de perméation
int tpSet = 100;
void setup() {
size(480, 320);
img = loadImage("imgName");
imgWidth = img.width;
imgHeight = img.height;
noStroke();
smooth();
background(255);
frameRate(60);
}
void draw() {
background(255);
img.loadPixels();
for (int x =0; x<imgWidth; x++) {
for (int y=0; y<imgHeight; y++) {
//x,Si y est la plage sélectionnée, rendez-la transparente.
color imgColor = img.get(x,y);
if(x>xstart && x<xstop && y>ystart && y<ystop){
fill(imgColor, tpSet);
}else{
fill(imgColor);
}
ellipse(x, y, 1, 1);//Peut être rect
}
}
}
Recommended Posts