ASCII Art: da webcam

    let capture;               // fotogrammi webcam
let font;                  // font (a spaziatura fissa) 
let caratteri = " .,;isg"; // palette caratteri
let charW = 9;             // larghezza cella caratteri
let charH = 12;            // altezza cella caratteri

function preload() {
    font = loadFont("Inconsolata-Regular.ttf");
}

function setup() {
    createCanvas(640, 480);
    textFont(font, 18);
    fill(255);

    capture = createCapture(VIDEO);
    capture.size(width / charW, height / charH);
    capture.hide();
}

function draw() {
    background(0);
    translate(0, 11); // posizione primo carattere

    let frame = capture.get();
    for (let riga=0;  riga<frame.height;  riga++) {
        for (let colonna=0;  colonna<frame.width;  colonna++) {
            let col = frame.get( colonna, riga );
            let tone = map(lightness(col), 0,100, 0,caratteri.length-1);
            let carattere = caratteri.charAt( tone );

            text( carattere, colonna*charW, riga*charH );
        }
    }
}
  

  

Crea l’elemento HTML per la cattura dei fotogrammi della webcam.
Ridimensiona i fotogrammi a una risoluzione pari alle colonne e alle righe necessarie.
Nascondi l’elemento HTML di cattura.


  

Crea una copia del fotogramma, per accelerare le operazioni di lettura dei pixel.


  

Ricava la luminosità del colore (lightness(col)), che va da 0 a 100, e ottieni un valore proporzionale al numero di caratteri della “palette”, da 0 a caratteri.length-1.


  

Ricava il carattere da usare come elemento tonale nella cella (della griglia) corrispondente al pixel analizzato.

Provare a definire una palette più estesa, più efficace o anche casuale, usando caratteri diversi nella definizione della stringa caratteri.