Infra - Linux
Criando um serviço de monitoramento de vídeo e detector de presença com sua WebCam no Linux
Se você já tem a sua webcam instalada no linux, este tutorial irá explicar como criar um serviço onde o vídeo ao vivo gerado da webcam é analisado permitindo a detecção de movimentos.
por Alessandro de Oliveira FariaCom este tutorial você conseguirá montar um sistema de monitoramento simplesmente gravando os quadros quando houver algum movimento. Ou seja o serviço não ficará gravando quadros estáticos, assim consumindo um enorme espaço em disco.
Veja o resultado:
ATENÇÃO: Caso você tenha uma placa de TV cujo o funcionamento não está adequado, talvez este tutorial possa te ajudar: http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=195
Neste link ( http://www.netitec.com.br/linux/images/motion.mpg ) você poderá ver o serviço em funcionamento em um vídeo mpeg, foi ele que me motivou a instalar este pacote.
O download, compilação e instalação:
O download é efetuado no seguinte link: http://motion.sourceforge.net/download/
Podemos efetuar o download através do wget, como no exemplo abaixo:
[root@athlon arquivos]# wget http://heanet.dl.sourceforge.net/sourceforge/motion/motion-3.1.10.tar.gz
Após o download, vamos descompactar o pacote com o comando tar:
[root@athlon arquivos]# tar -zxvf motion-3.1.10.tar.gz
Agora vamos compilar o pacote:
[root@athlon arquivos]# cd motion-3.1.10 [root@athlon motion-3.1.10]# chmod 777 configure [root@athlon motion-3.1.10]# ./configure [root@athlon motion-3.1.10]# make [root@athlon motion-3.1.10]# make install
Pronto, neste etapa estamos com o software motion instalado em nosso sistema.
Configuração:
Agora vamos fazer os ajustes finos:
Em primeiro lugar vamos criar o arquivo motion.conf dentro de nosso diretório home.
[root@athlon motion-3.1.10]# cd ~ [root@athlon root]# cd .motion/ [root@athlon .motion]# cp /usr/local/etc/motion.conf . [root@athlon .motion]# vi motion.conf
Agora faremos agora as devidas alterações no arquivo motion.conf.
Defini a localização do dispositivo de vídeo captura.
videodevice /dev/video0
Número de quadros por segundo capturados.
framerate 10
Origem da entrada do vídeo em caso de placas receptoras de TV
input 1
Modo de vídeo 0=PAL-M/=NTSC
norm 1
Dimensão do vídeo
width 320
height 240
Número de pixel mudados na imagem
threshold 1000
Sensibilidade do movimento
noise_level 16
Localizar e desenhar um box em torno do objeto em movimento
locate yes
Gravação do movimento
output_motion yes
Qualidade da JPEG
quality 100
Gerar um arquivo mpeg
ffmpeg_cap_new yes
Usar o ffmpegs para codificar mpeg do movimento em tempo real
ffmpeg_timelaps on
Usar o codificador Berkeley mpeg
mpeg_encode yes
Grava as detecções de movimento
realmotion yes
Tempo máximo do arquivo mpeg (em segundos)
max_mpeg_time 20
Usando o arquivo thread1.conf para instanciação de processo.
thread thread1.conf
Executando o serviço:
Para colocarmos em funcionamento o software, executamos os seguinte comandos:
[root@athlon .motion]# mkdir /seguranca [root@athlon .motion]# motion -t /seguranca/ Unkown config option: "ffmpeg_cap_new" Unkown config option: "ffmpeg_timelaps" Unkown config option: "ffmpeg_bps" config_thread thread config file not found: No such file or directory thread0 device: /dev/video0 input: 1 thread pid: 9553 waiting for threads to finish, pid: 9551 Motion detected File of type image/jpg saved to: /seguranca//2004/03/27/16/52/02-06m.jpg File of type image/jpg saved to: /seguranca//2004/03/27/16/52/02-06.jpg Motion detected File of type image/jpg saved to: /seguranca//2004/03/27/16/52/02-07m.jpg File of type image/jpg saved to: /seguranca//2004/03/27/16/52/02-07.jpg Motion detected File of type image/jpg saved to: /seguranca//2004/03/27/16/52/02-08m.jpg File of type image/jpg saved to: /seguranca//2004/03/27/16/52/02-08.jpg Motion detected File of type image/jpg saved to: /seguranca//2004/03/27/16/52/03-00m.jpg File of type image/jpg saved to: /seguranca//2004/03/27/16/52/03-00.jpg Motion detected File of type image/jpg saved to: /seguranca//2004/03/27/16/52/03-01m.jpg File of type image/jpg saved to: /seguranca//2004/03/27/16/52/03-01.jpg Motion detected
Agora basta disponibilizar a pasta segurança no samba o via web para monitora os vídeo de sua webcam. Reparem que os quadro são gravados na seguinte estrutura:
[Path especificado]/ano/mes/dia/hora/minuto-segundo.jpg
Não se esqueça que o serviço gera um mpeg de 20 em 20 segundos (do vídeo ao vivo) conforme configuramos a acima.
Inserindo um movimento giratório na webcam com um motor de passo.
Com um simples programinha em C, alguns componentes e um motor de passo. Podemos criar um movimento giratório na camêra controlado pela porta serial.
Em http://motion.sourceforge.net/tracking/ temos com detalhes de como criar este projeto.
Entretanto o meu sócio cujo cognome é Indio (alexandrecastro@netitec.com.br). Com um cabo paralelo + 1 componente + o Moto de Passo, ele conseguiu substituir a placa inteira, porém tive que usar a porta paralela da impressora.
Bom não vou entrar em maiores detalhes sobre o hardware, qualquer dúvida e mais detalhes, mande um e-mail para o índio (pois esta não é minha praia) .
Eu e o índio desenvolvemos a nossa solução, e segue abaixo o código que eu escrevi em C++. Este fonte manipula o movimento giratório da camêra.
#include <stdio.h> #include <stdlib.h> #include <sys/io.h> #define base 0x378 /* Endereço da porta da impressora */ main(int argc, char **argv) { int j,i,value,flag; int sinal[8]; if (ioperm(base,1,1)) fprintf(stderr, "Erro: Usuario nao tem permissao para acessar a porta %x\n", base), exit(1); sinal[1] = 1; sinal[2] = 3; sinal[3] = 2; sinal[4] = 6; sinal[5] = 4; sinal[6] = 12; sinal[7] = 8; sinal[8] = 9; flag = 1; while ( 1 ) { for(j = 1 ; j <= 15 ; j ++) { if(flag) value = sinal[1]; else value = sinal[8]; for(i = 1 ; i<=8 ; i++) { outb((unsigned char)value, base); usleep(1); if(flag) value = sinal[i]; else value = sinal[9-i]; } } flag = !flag; } }
Veja como ficou o nosso hardware:
- Login automático com SSH e Automatização da instalação (deploy) e atualização de sites com GitLinux
- Extensão Sun Presentation Minimizer para Broffice.ORGLinux
- Otimização de Desempenho em sistemas GNU/LinuxLinux
- Hardware para sistemas GNU/Linux - Dicas de Desempenho - Parte 3Hardware
- Hardware para sistemas GNU/Linux - Dicas de Desempenho - Parte 2Hardware