Webcam

Transcrição

Webcam
Webcam
Exemplo da utilização da Webcam
 Utilize o ficheiro camara.fla
 Este ficheiro já possui elementos visuais para colocarmos o que
necessitamos
 Temos duas instâncias de Movie Clip rectangulares
 area1
 area2
 Uma instância de Movie Clip com o desenho de um círculo que
possui o nome de:
 bola_status
 Uma caixa de texto do tipo dinâmico com o nome de instância:
 texto_status
 Um botão com o nome de instância:
 copiar
Exemplo da utilização da Webcam
Exemplo da utilização da Webcam
Nome das instâncias:
area2
area1
Bola_status
copiar
texto_status
Exemplo da utilização da Webcam
 Seleccione a primeira keyframe da camada acoes e abra o painel
Actions
 Vamos instanciar um objecto que receberá o vídeo capturado pela
webcam
var captura: Camera = Camera.getCamera()
 Criamos uma instância chamada captura que receberá as imagens
capturadas pela webcam (Camera.getCamera())
 Numa nova linha digite:
var area_video: Video = new Video()
 Criamos uma instância chamada area_video a partir da classe
Video, porque a câmara não é exibida directamente na tela
 Precisamos criar um vídeo que posteriormente receberá as
informações que a webcam está fornecendo
Exemplo da utilização da Webcam
 Agora, numa nova linha digite:
area_video.attachCamera(captura);
area1.addChild(area_video);
 Na primeira linha anexamos à instância de vídeo chamada
area_video, as informações que a webcam (representada pela
instância captura) possui através do método attachCamera
 Na segunda linha adicionamos à instância de Movie Clip
chamada area1, através do método addChild, o vídeo para
que esse vídeo capturado na webcam apareça na área dessa
instância
Exemplo da utilização da Webcam
 Vamos agora ajustar a configuração de captura
captura.setMode(320, 240, 30);
 Para a instância captura definimos as configurações pelo
método setMode() digitando seus parâmetros (separados
por vírgulas) de largura (320), altura (240) e quantidade de
quadros por segundo (30) do vídeo capturado
 Quando testar o filme, aparece uma janela a perguntar se
permite que a sua câmara e o seu microfone sejam acedidos
 Escolha a opção Allow (permitir)
Exemplo da utilização da Webcam
Detecção de Movimento no Vídeo
 Vamos preparar o Flash para verificar se há movimentação
nas imagens capturadas ou não (por exemplo, se a pessoa se
encontra parada ou fora do alcance da webcam por algum
tempo)
 Em primeiro lugar repare que a instância de Movie Clip
chamada bola_status que temos na tela (a bola localizada na
parte inferior esquerda) possui dentro uma outra instância de
Movie Clip chamada bola
 Para ver isso, basta dar 2 cliques seguidos com o rato em
cima da instância bola_status
Detecção de Movimento no Vídeo
Detecção de Movimento no Vídeo
 Quando detectarmos movimento, vamos mudar a cor dessa
bola interna
 Acrescente ao código existente a linha:
var cor: ColorTransform =
bola_status.bola.transform.colorTransform;
 Criamos um elemento chamado cor do tipo ColorTransform
a partir da propriedade transform.colorTransform da bola
interna (bola_status.bola), responsável pela cor de um
elemento visual
Detecção de Movimento no Vídeo
 Agora, numa nova linha digite
Captura.setMotionLevel(20, 500)
 Utilizamos para a instância chamada captura o método
setMotionLevel() que determina as configurações para a
verificação de movimento
 O primeiro parâmetro a ser passado a esse método (separados por
vírgula) é a intensidade do movimento
 Um valor entre 0 e 100 em que 0 verifica até os mais tímidos
movimentos e 100 necessita de um movimento mais intenso
 No exemplo a intensidade está definida para 20
 O outro parâmetro define o tempo que demora a se considerar a
câmara sem movimento ou seja sem actividade
 Esse valor é em milissegundos
 No exemplo está definido para meio segundo, através do valor 500
Detecção de Movimento no Vídeo
 Numa nova linha digite:
captura.addEventListener(ActivityEvent.ACTIVITY,
actividade)
 Criamos um ouvinte que fica à escuta de um evento de
actividade (quando detectou movimento ou a falta dele na
webcam) e neste caso executa a função actividade que irá
criar a seguir
Detecção de Movimento no Vídeo
 Digite a seguinte função:
function actividade(evento: ActivityEvent): void {
if (evento.activating == true) {
texto_status.text = “Movimento detectado”;
cor.color = 0x00FF000;
bola_status.bola.transform.colorTransform = cor;
} else {
texto_status.text = “Sem Movimento”;
cor.color = 0xFF00000;
bola_status.bola.transform.colorTransform = cor;
}
}
Detecção de Movimento no Vídeo
 Criamos uma função chamada actividade que será executada
pelo ouvinte que criamos anteriormente
 Temos como parâmetro da função um elemento denominado
“evento”, que armazenará o evento que chama essa função
 Criamos a seguir uma estrutura condicional (if)
 A propriedade activating do parâmetro pode tomar os valores
 true quando o movimento for detectado
 false quando não está sendo detectada movimentação
Detecção de Movimento no Vídeo
 A estrutura (if) teste através do == se o valor de activating está a
true, neste caso executará o que se encontra nessas chaves { }
 Dentro das chaves definimos o texto (text) da caixa de texto
chamada texto_status como sendo a frase “Movimento
Detectado”
 Em seguida definimos para o parâmetro color do elemento de
cor que criamos antes (cor.color) a cor verde (0x00FF00)
 Logo na linha seguinte aplicamos essa cor à bola interna
(bola_status.bola)
Detecção de Movimento no Vídeo
 Em seguida a condicional (if) encontra um comando else que caso
a pergunta feita no início (evento.activating == true) for
respondida negativamente, ou seja, não está ocorrendo
movimento, executa o que se encontra entre as chaves { } do else
 No caso será semelhante ao feito anteriormente apenas com a
diferença que o texto agora será “Sem Movimento” e a cor da bola
vermelha (0xFF0000)
 Teste o filme
 Repare que além de estar a aparecer o vídeo, quando há
movimento, o círculo fica verde e aparece o texto “Movimento
detectado” e quando não há movimento, o círculo fica vermelho e
aparecem as palavras “Sem movimento”
Detecção de Movimento no Vídeo
Screenshots
 Vamos programar o botão copiar para que ao pressioná-lo o
Flash coloque na área da direita (ao lado da captura do vídeo)
um screenshot (imagem capturada) a partir do que estiver
aparecendo na webcam
 Numa nova linha digite:
var bmd: BitmapData = new BitmapData(320, 240, false,
0xFFFFFF);
var imagem: Bitmap = new Bitmap(bmd);
area2.addChild(imagem);
Screenshots
 Na primeira linha criamos uma instância chamada “bmd” do
tipo BitmapData gerada a partir da classe BitmapData
 Dentro dos parênteses colocamos a largura (320 pixels), a
altura (240 pixels), definindo que sua base não será
transparente (marcada a opção false) e a cor de seu
preenchimento 0xFFFFFF (branca)
 Na segunda linha criamos uma instância chamada “imagem”
do tipo Bitmap gerada a partir da classe Bitmap
 Dentro dos parênteses inserimos o nome da instância do
BitmapData (bmd)
Screenshots
 Na terceira linha adicionamos a instância da classe Bitmap
chamada imagem dentro da instância de Movie Clip chamada
area2 através do método addChild
 Ou seja, como a instância area2 já está visível no filme, ao
adicionar a instância imagem a ela, automaticamente também
estará visível
 Numa nova linha digite:
copiar.addEventListener(MouseEvent.CLICK, copia);
function copia(evento: MouseEvent): void {
bmd.draw(area1);
}
Screenshots
 Na primeira linha criamos um ouvinte para a instância de
botão chamada copiar que, quando for clicado, executa uma
função chamada copia
 Dentro dessa função copiamos para o BitmapData, através do
método draw, o conteúdo do Movie Clip (que tem o nome de
instância area1)
 Ou seja, sempre que o botão for pressionado, o que estiver
passando no vídeo (sendo capturado) será armazenado na
instância bmd e aparecerá na área da direita

Documentos relacionados