Hellsten Punkt im Videobild tracken in Processing

Hinzugefügt am von Steffen Fiedler
Tracking wird als das Lokalisiern von Bildpunkten -abschnitten bezeichnet. Dieser Sketch durchsucht das Kamerabild nach dem hellsten Pixel und zeichnet ein Rechteck um seine Position. In der Variable maxCol speichert Processing den höchsten brightness()-Wert und die dazugehörige Position im Bild (xpos und ypos). Pixel für Pixel wird das aktuelle Maxima mit den verbleibenden Pixeln vergleichen - und wenn überschritten auf die neue Position gesetzt.

Der Sketch

import processing.video.*;

Capture videocam;
// tracking Position
int xpos = 0;
int ypos = 0;

void setup () {
  size (320, 240);
  videocam = new Capture (this, width, height, 24);
  noFill ();
  strokeWeight (2);
  stroke (255, 0, 102);
}

void draw () {
  background (255);
  
  float maxCol = 0;
  if (videocam.available ()) {
    videocam.read ();
  }

  // für jeden Pixel in Breite des Sketches
  for (int i=0; i < width; i++) {
    for (int j=0; j < height; j++) {
      // lies den Farbwert für jeden Pixel aus
      color c = videocam.get (i, j);
      // Wenn heller als aktuelles Maximum
      // -> ersetze Tracking-Koordinaten
      if (brightness (c) > maxCol) {
        maxCol = brightness (c);
        xpos = i;
        ypos = j;
      }
    }
  }
  // Zeichne Bild und TrackingBox
  image (videocam, 0, 0);
  rect (xpos-2, ypos-2, 5, 5);
}