Februar 27, 2012
Wir erlernten, wie es möglich ist ein Bild PImage() mit Hilfe der Funktion loadPixels() auszulesen und so auf die verschiedenen Pixel zuzugreifen um diese zu bearbeiten oder darzustellen. Hier habe ich mich für die History entschieden. Ich stelle im obenstehenden Bild die Helligkeitswerte der einzelnen Pixel dar.// Aufgabenstellung: Diashow erstellen mit 5 Bildern welche durch drücken der Leertaste wechseln. Anschliessend kann man mit der Maus über das Bild fahren und // sieht die Pixelwerte des unter dem Cursor liegende Pixels. PImage [] img; int[] hist = new int[256]; int welchesBild; void setup() { img = new PImage[5]; img[0] = loadImage("landschaft.jpg"); img[1] = loadImage("landschaft1.jpg"); img[2] = loadImage("landschaft2.jpg"); img[3] = loadImage("landschaft3.jpg"); img[4] = loadImage("landschaft4.jpg"); size(1024,768); } void draw() { image(img[0],0,0); switch(key) { case'1': int welchesBild = 0; image(img[welchesBild],0,0); bildDurchsuchen(); break; case'2': welchesBild = 1; image(img[welchesBild],0,0); bildDurchsuchen(); break; case'3': welchesBild = 2; image(img[welchesBild],0,0); bildDurchsuchen(); break; case'4': welchesBild = 3; image(img[welchesBild],0,0); bildDurchsuchen(); break; case'5': welchesBild = 4; image(img[welchesBild],0,0); bildDurchsuchen(); break; } } void bildDurchsuchen() { for (int i = 0; i < img[welchesBild].width; i++) { // diese Schleife geht durch die Spalten for (int j = 0; j < img[welchesBild].height; j++) { // diese Schleife geht die Pixel der Spalte durch int bright = int(brightness(get(i, j))); // get(i,j) liest die Farbinformation des Pixels mit den Koordinaten i,j aus / brightness() gibt die Helligkeit des Pixels aus hist[bright]++; // schreibt den Wert ins Array } } // Find the largest value in the histogram int histMax = max(hist); // liest den höchsten Wert des Arrays aus stroke(255); //setzt die Strichfarbe auf Weiss // Draw half of the histogram (skip every second value) for (int i = 0; i < img[welchesBild].width; i += 2) { // for-Schleife welche jede 2. Spalte durchläuft // Map i (from 0..img.width-1) to a location in the histogram (0..255) int which = int(map(i, 0, img[welchesBild].width, 0, 255)); // Wert wird generiert aus i welcher von 0 bis 255 ist // um die Darstellung auf die ganze Grösse zu machen. // Convert the histogram value to a location between // the bottom and the top of the picture int y = int(map(hist[which], 0, histMax, img[welchesBild].height, 0)); // nimmt den Wert aus dem Array welches dem Wert des Arrays entspricht und mapt diesen. line(i, img[welchesBild].height, i, y); } }