Interazione con gli elementi HTML

Con p5.js, fra l'altro, è possibile:

// width=670 height=600 lines=16
var video;
var slider;

var cols = 36;
var rows = 27;

var boxes = [];

function setup() {
  noCanvas();
  pixelDensity(1);
  video = createCapture(VIDEO);
  video.size(cols, rows);
  slider = createSlider(0, 255, 77);
  createDiv("").id("mirror");

  for (var y = 0; y < rows; y++) {
    for (var x = 0; x < cols; x++) {
      var box = createCheckbox();
      box.style('display', 'inline');
      box.style('margin', '0 -1px');
      box.parent('mirror');
      boxes.push(box);
    }
    var linebreak = createSpan('<br/>');
    linebreak.parent('mirror');
  }
}

function draw() {
  video.loadPixels();
  for (var y = 0; y < video.height; y++) {
    for (var x = 0; x < video.width; x++) {
      var index = (video.width - x + 1 + (y * video.width))*4;
      var r = video.pixels[index+0];
      var g = video.pixels[index+1];
      var b = video.pixels[index+2];
      var bright = (r+g+b)/3;

      var threshold = slider.value();

      var checkIndex = x + y * cols;
      if (bright > threshold) {
        boxes[checkIndex].checked(false);
      } else {
        boxes[checkIndex].checked(true);
      }
    }
  }
}

Il codice è un po' complesso per chi è agli inizi ma i più curiosi possono dare un'occhiata ai videotutorial di Daniel Shiffman:
- Brightness Mirror per la cattura dei fotogrammi
- Checkbox Mirror per l'uso dei checkbox
e ai codici completi:
- CodingTrain/.../Tutorials/P5JS/p5.js_video/11.5_checkbox_mirror