Vamos a empezar haciendo una gilipollez: vamos a sustituir cada píxel de una imagen por otro exactamente igual.
//importamos una imagen
PImage img;
img = loadImage("yo.jpg");
size(img.width, img.height);
image(img, 0, 0);
//cargamos todos sus píxeles
loadPixels();
for (int i = 0; i < pixels.length; i++) {
//leemos el valor de los canales rojo, verde y azul de cada uno
float r = red(pixels[i]);
float g = green(pixels[i]);
float b = blue(pixels[i]);
//asignamos esos mismos valores a cada píxel
pixels[i] = color(r, g, b);
}
//actualizamos
updatePixels();
Lo dicho, una tontería: hemos sustituido una imagen por otra exactamente igual… pero, y ahí está la diferencia, formada por elementos que podemos modificar. Al almacenar los valores de cada canal de color en una variable podemos modificar esos valores. Por ejemplo, ¿qué pasaría si reducimos el valor del canal azul a la mitad?
pixels[i] = color(r, g, b/2);
¿O si cambiamos los valores de orden?
pixels[i] = color(g, b, r);
¿O, volvámonos locos, si cambiamos el modo de color a HSB y asignamos a esos canales los valores RGB?
Hay mil transformaciones que podemos efectuar simplemente leyendo y modificando colores. Aquí tenéis un par de enlaces que lo explican:
Discúlpame buena noche, que lenguaje de programación estas usando?
Processing. Aquí tienes algo de información básica -> http://dunadigital.com/processing/2013/07/14/que-es-processing/
Hola, disculpa, cargo tu codigo en mi laptop y me dice que en size() tengo error ya que solo debo escribir numeros, sabes como lo puedo solucionar?
Hola Alejandra.
Eso es porque seguramente estás usando Procesing 3, que no permite usar variables en size(). En mi código aparece ‘size(img.width, img.height);’, es decir que la ventana de la aplicación toma las dimensiones de la variable img (la foto). Si la ejecutas con Processing 2, por ejemplo, funcionará. Para que puedas usarlo en Processing 3, sustituye las variables escritas dentro del paréntesis por las dimensiones en píxeles (ancho, alto) de la imagen que quieres procesar.
Hola, sabes como crear histogramas en processing? Gracias también por este aporte, espero puedas responderme
Sí, en la documentación de processing.org tienes un ejemplo bastante claro -> https://processing.org/examples/histogram.html
Thanks!!!