Created
May 10, 2016 14:28
-
-
Save edmorais/9c1f7e950c38985528b40c86ea8c1e4a to your computer and use it in GitHub Desktop.
Processa imagem da webcam, mostrando-a em negativo ao lado da original.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*_ ___ ___ ___ __ _ __ | |
| | / __|_ _|_ ) \/ |/ / | |
| |__\__ \| | / / () | / _ \ | |
|____|___/___/___\__/|_\___/ | |
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