Skip to content

Instantly share code, notes, and snippets.

@edmorais
Created May 10, 2016 14:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save edmorais/9c1f7e950c38985528b40c86ea8c1e4a to your computer and use it in GitHub Desktop.
Save edmorais/9c1f7e950c38985528b40c86ea8c1e4a to your computer and use it in GitHub Desktop.
Processa imagem da webcam, mostrando-a em negativo ao lado da original.
/*_ ___ ___ ___ __ _ __
| | / __|_ _|_ ) \/ |/ /
| |__\__ \| | / / () | / _ \
|____|___/___/___\__/|_\___/
Aula de 9/5/2016:
Processa imagem da webcam, mostrando-a em negativo ao lado da original.
Por Eduardo Morais / FBAUP - www.eduardomorais.pt/fbaup/
*/
/*
Importa biblioteca de vídeo
(instalar via menu Sketch -> Import Library -> Add Library -> Pesquisar 'Video'):
*/
import processing.video.*;
Capture camara; // declaramos o objecto do tipo Capture (webcam)
/*
Função setup():
Executada automaticamente no início do programa:
*/
void setup() {
size(640, 480);
background(0);
// iniciamos uma nova captura com as dimensões VGA (640 x 480):
camara = new Capture(this, 640, 480);
camara.start(); // ligamos a câmara
}
/*
Função draw():
Executada repetidamente a cada 'frame'/fotograma de animação.
*/
void draw() {
if (camara.available()) {
// Se a câmara tiver um novo fotograma disponível:
camara.read(); // lê a imagem da câmara
// mostra a imagem nas coordenadas 0,120 e com metade das dimensões:
image(camara, 0, 120, camara.width/2, camara.height/2);
// Vamos carregar o array camara.pixels[] com a imagem da câmara.
// Agora podemos manipular cada um dos pixels:
camara.loadPixels();
for (int i = 0; i < camara.pixels.length; i++) {
// percorremos todos os pixels da imagem, e para cada um...
camara.pixels[i] = color(
255-red(camara.pixels[i]),
255-green(camara.pixels[i]),
255-blue(camara.pixels[i])
);
// ... damos a esse pixel um cor correspondente ao inverso da cor actal
// (para tal subtraímos o valor de cada componente RGB a 255).
}
// actualizamos a imagem com o array que manipulámos:
camara.updatePixels();
// mostramos a imagem actualizada ao lado da imagem original:
image(camara, width/2, 120, camara.width/2, camara.height/2);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment