Filters
In Processing kan je ingeladen afbeeldingen of het ingeladen webcambeeld in real time bewerken met filters. Die filters hoef je niet zelf te programmeren, ze zijn ingebouwd.
| Filter Naam | Beschrijving | Voorbeeldcode (Processing) |
|---|---|---|
| BLUR | Maakt het beeld wazig |
filter(BLUR, 5);
|
| GRAY | Converteert het beeld naar grijswaarden |
filter(GRAY);
|
| INVERT | Inverteert de kleuren van het beeld |
filter(INVERT);
|
| OPAQUE | Maakt alle pixels volledig ondoorzichtig |
filter(OPAQUE);
|
| POSTERIZE | Reduceert het aantal kleuren in het beeld |
filter(POSTERIZE, 5);
|
| THRESHOLD | Converteert het beeld naar zwart-wit, gebaseerd op een drempelwaarde |
filter(THRESHOLD, 0.5);
|
| ERODE | Vermindert de helderheid van lichte delen van het beeld |
filter(ERODE);
|
| DILATE | Vergroot de helderheid van lichte delen van het beeld |
filter(DILATE);
|
In het onderstaande codevoorbeeld wissel je tussen de diverse filters door de juiste toets op het toetsenbord in te drukken.
import processing.video.*;
Capture cam;
// Variabele om bij te houden welk filter toegepast moet worden
String filterType = "";
void setup() {
fullScreen();
String[] cameras = Capture.list();
if (cameras == null || cameras.length == 0) {
println("Geen camera gevonden!");
exit();
} else {
cam = new Capture(this, cameras[0]);
cam.start();
}
}
void draw() {
if (cam.available()) {
cam.read();
}
// Teken de camera-afbeelding
image(cam, 0, 0, width, height);
// Pas het filter toe op basis van de geselecteerde filterType
if (filterType.equals("BLUR")) {
filter(BLUR, 5);
} else if (filterType.equals("GRAY")) {
filter(GRAY);
} else if (filterType.equals("INVERT")) {
filter(INVERT);
} else if (filterType.equals("THRESHOLD")) {
filter(THRESHOLD, 0.5);
} else if (filterType.equals("POSTERIZE")) {
filter(POSTERIZE, 5);
} else if (filterType.equals("ERODE")) {
filter(ERODE);
} else if (filterType.equals("DILATE")) {
filter(DILATE);
}
}
void keyPressed() {
// Koppel de toets aan een filter
if (key == 'b' || key == 'B') {
filterType = "BLUR";
} else if (key == 'g' || key == 'G') {
filterType = "GRAY";
} else if (key == 'i' || key == 'I') {
filterType = "INVERT";
} else if (key == 't' || key == 'T') {
filterType = "THRESHOLD";
} else if (key == 'p' || key == 'P') {
filterType = "POSTERIZE";
} else if (key == 'e' || key == 'E') {
filterType = "ERODE";
} else if (key == 'd' || key == 'D') {
filterType = "DILATE";
} else if (key == 'n' || key == 'N') {
// 'n' om het filter uit te schakelen
filterType = "";
}
}