Februar 28, 2012
Wir lesen ein Bild mithilfe von PImage und loadImage() ein und lesen die Farbwerte der Pixel aus dem Pixelarray des Bildes. Ich habe die Farbwerte mit Rechtecken nachgezeichnet, die sich mit der Mausbewegung verkleinern und vergrößern. Wird die Maus geklickt so erscheinen die Pixel farblich geordnet.import processing.video.*; Capture myCapture; int pixelx= 1; int pixely= 1; color [] farbe; int coutner = 0; void setup() { size(800, 450); String s = "DV Video"; myCapture = new Capture(this, width, height); // Set the frameRate to read 4 new images per second myCapture.frameRate(25); farbe = new color[(800)*(450)]; } void draw() { if (myCapture.available()) { myCapture.read(); } //image(myCapture, 0, 0); // println(Capture.list()); coutner = 0; if(mousePressed == true){ farbe = sort(farbe); for (int y = 0; y<height; y+=pixely) { for (int x = 0; x < width; x+=pixelx) { noStroke(); fill(farbe[coutner]); coutner++; rect(x,y,pixelx,pixely); } } }else{ farbe = new color[(800)*(450)]; for (int y = 0; y<height; y+=pixely) { for (int x = 0; x < width; x+=pixelx) { color c = getAvarageColor(myCapture, x, y, pixelx, pixely); noStroke(); fill(c); farbe[coutner] = c; coutner++; pixelx = int(map(mouseX,0,width,1,20)); pixely = int(map(mouseY,0,height,1,20)); rect(x,y,pixelx,pixely); } } } } color getAvarageColor(Capture _img, int _posX, int _posY, int _w, int _h) { int vR = 0; int vG = 0; int vB = 0; for (int y=_posY; y<_posY+_h; y++) { for (int x=_posX; x<_posX+_w; x++) { vR += red(_img.get(x, y)); vG += green(_img.get(x, y)); vB += blue(_img.get(x, y)); } } return(color(vR/(_w*_h), vG/(_w*_h), vB/(_w*_h))); }