xxxxxxxxxx
81
// Daniel Shiffman / Coding Train
let video;
let sorted;
let index = 0;
//for viewing the framerate
let frameP;
let sorting = false;
function setup() {
createCanvas(200, 100);
video = createCapture(VIDEO);
video.size(100, 100);
sorted = createImage(100, 100);
// sorted = img.get();
console.log("image copied");
frameP = createP(frameRate());
}
function keyPressed() {
if (key == "s") {
sorted = video.get();
sorting = true;
}
}
function draw() {
// for viewing the framerate
frameP.html("frameRate: " + nf(frameRate(), 2, 2));
if (sorting) {
sorted.loadPixels();
// Selection sort
for (let n = 0; n < 20; n++) {
let record = -1;
let selectedPixel = index;
for (let j = index; j < sorted.pixels.length; j += 4) {
let pix = color(
sorted.pixels[j],
sorted.pixels[j + 1],
sorted.pixels[j + 2],
sorted.pixels[j + 3]
);
let b = hue(pix);
if (b > record) {
selectedPixel = j;
record = b;
}
}
// Swap selectedPixel with i
let temp = [];
temp[0] = sorted.pixels[index];
temp[1] = sorted.pixels[index + 1];
temp[2] = sorted.pixels[index + 2];
temp[3] = sorted.pixels[index + 3];
sorted.pixels[index] = sorted.pixels[selectedPixel];
sorted.pixels[index + 1] = sorted.pixels[selectedPixel + 1];
sorted.pixels[index + 2] = sorted.pixels[selectedPixel + 2];
sorted.pixels[index + 3] = sorted.pixels[selectedPixel + 3];
sorted.pixels[selectedPixel] = temp[0];
sorted.pixels[selectedPixel + 1] = temp[1];
sorted.pixels[selectedPixel + 2] = temp[2];
sorted.pixels[selectedPixel + 3] = temp[3];
if (index < sorted.pixels.length - 1) {
index += 4;
}
}
sorted.updatePixels();
}
background(0);
image(video, 0, 0);
image(sorted, 100, 0);
}