Curso AS3

Mais um experimento, Webcam Colorida

A classe BitmapData é realmente muito divertida. Neste experimento foi usado o método ‘threshold’ para realizar a colorização da imagem recebida da webcam.

Caso você tenha uma webcam, logo abaixo do vídeo coloquei o arquivo para você poder ver o experimento em funcionamento.

O Actionscript usado nesta aplicação está no final da página, a explicação está comentada no próprio script.

Webcam Colorida

This movie requires Flash Player 8.

//importando as classes que serão utilizadas
import flash.display.*;
import flash.geom.*;
 
//objeto Camera
var camera:Camera = Camera.get();
//anexar o objeto Camera ao objeto video que esta no movieClip mcCam
mcCam.webcam.attachVideo(camera);
 
//objeto  BitmapData da imgem final
var imagem:BitmapData = new BitmapData(camera.width, camera.height, false, 0);
//objeto  BitmapData que conterá a imagem modificada
var imagemContainer:BitmapData = new BitmapData(camera.width, camera.height, false, 0);
 
//objeto retangulo, define a área da imagem fonte no método threshold
var retangulo = new Rectangle(0, 0, camera.width, camera.height);
//objeto ponto, os pontos correspondem ao topo na esquerda da imagem fonte no método threshold
var ponto = new Point(0, 0);
 
//função que desenhará a nova imagem
function atualizarImagem():Void{
	//desenha a imagem da webcam no objeto BitmapData
	imagemContainer.draw(mcCam.webcam);
	//através do método threshold é efetuada a troca de cores
	imagem.threshold(imagemContainer, retangulo, ponto, "<", 8000000, 0x006600, 0xFF0000, false);
	imagem.threshold(imagemContainer, retangulo, ponto, ">", 8000000, 0xFF3333, 0xFF0000, false);
	imagem.threshold(imagemContainer, retangulo, ponto, ">", 10000000, 0xFFFF66, 0xFF0000, false);
	imagem.threshold(imagemContainer, retangulo, ponto, ">", 12000000, 0x99FF66, 0xFF0000, false);
	imagem.threshold(imagemContainer, retangulo, ponto, ">", 15000000, 0xFFFFFF, 0xFF0000, false);
};
 
//movieClip para armazenar as imagens modificadas
this.createEmptyMovieClip('mcCamModificado', this.getNextHighestDepth());
mcCamModificado._x = 20;
mcCamModificado._y = mcCam._y + mcCam._height + 20;
 
//primeira imagem modificada
mcCamModificado.createEmptyMovieClip('cam1', mcCamModificado.getNextHighestDepth());
mcCamModificado.cam1.attachBitmap(imagem, mcCamModificado.getNextHighestDepth()); //anexa a imagem
 
//segunda imagem modificada
mcCamModificado.createEmptyMovieClip('cam2', mcCamModificado.getNextHighestDepth());
mcCamModificado.cam2.attachBitmap(imagem, mcCamModificado.getNextHighestDepth()); //anexa a imagem
mcCamModificado.cam2._xscale = -100; //inverte a imagem
mcCamModificado.cam2._x = mcCamModificado.cam1._x +mcCamModificado.cam1._width + mcCamModificado.cam1._width - 1;
 
//a função setInterval executa a atualização das imagens
setInterval(atualizarImagem, 50);

4 Responses to “Mais um experimento, Webcam Colorida”

  1. Tiago Andrade Says:

    Erick, qual versão do flash vc usou?

    Abraço

  2. Erick Souza Says:

    Tiago, Flash 8.

  3. sam Says:

    Olá!!
    muito legal seu blog, sempre visito e aprendo bastante.
    ai, estava olhando este experimento com a web cam e nao consegui
    ver funcionando. acessei de um notebook com webcam embutida.
    me pediu para aceitar o acesso a web cam e microfone, a ceitei e
    a tela ficou verde… sabe se estou fazerndo algo errado?

    gostaria de aprender a fazer um assim… obrigado!!

    Sam

  4. Luciano Says:

    muito legal seu trabalho tentei fazer aqui mais não roda no servidor, tipo se outra pessoa acessar´não aparece a imagem , apenas no comp. local. vc tem alguma ideia?
    obrigado
    Luciano
    yy200@ig.com.br

Leave a Reply