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 pela webcam é analisado permitindo a detecção de movimentos. E para enriquecer o projeto, um esquema elétrico para controlar o movimento giratório da sua webcam pela porta serial.

[ Hits: 162.950 ]

Por: Alessandro de Oliveira Faria (A.K.A. CABELO) em 31/03/2004 | Blog: http://assuntonerd.com.br


Controlando o movimento giratório da 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 câmera controlado pela porta serial.

Em http://motion.sourceforge.net/tracking/ temos com detalhes de como criar este projeto.

Entretanto o meu sócio cujo codinome é Índio (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 câmera.

#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: Usuário não tem permissão 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:


Maiores informações sobre a confecção do motor de passo você encontra em:
http://www.rogercom.com/pparalela/IntroMotorPasso.htm


Acho que este tutorial ajudará a concluir a instalação deste pacote. Assim encurtando o tempo de pesquisa.

Página anterior    

Páginas do artigo
   1. Introdução
   2. O download, compilação e instalação
   3. Configuração
   4. Executando o serviço
   5. Controlando o movimento giratório da webcam com um motor de passo
Outros artigos deste autor

Hbasic, um forte candidato open source para brigar com o Microsoft Visual Basic

HairCAPTURE – Utilizando captura de vídeo em C++ (sem segredos)

openCertiface: Biométrica Facial em nuvem baseada em software livre

SIAGES: Uma oportunidade de negócio com software livre

Linguagem LOGO: Crianças programando de maneira divertida

Leitura recomendada

Instalação de impressora multifuncional HP no Linux

Instalando uma placa DWL-520+ no kernel 2.6.x

Experimento: SWAP diretamente na memória RAM - Testes para RAM e SWAP

Como instalar sua placa de vídeo ATI no Fedora Core 6

Como utilizar duas GPU em Notebook Optimus com drive legacy 390xx

  
Comentários
[1] Comentário enviado por fabio em 31/03/2004 - 00:14h

Cabelo, se superou nesse tutorial, muito bacana mesmo. Vou inclusive arroxar meu orçamento para ver se finalmente compro uma webcam para testar a teoria desse artigo.

Parabéns!

[2] Comentário enviado por wilbil em 31/03/2004 - 17:54h

nossa
um dia vou ser tao bom quanto o cabelo tomara

cabelo desculpe minha ignorancia(tenho uma duvida [*****]) adorei seu sistema mas fiquei com alguma duvida

1.vamos levar em consideracao que minha casa e assim
------- ----------
| TV | | SOFA |
------- ----------
|
O O e a camera
TV desligada
entao minha camera esta filmando a tv
e nao passo na frente entao fica estatico

mas se eu colocar o motor de passo para ele ficar alternando ente a TV e o SOFA sera considerado um movimeto?

pois meus neuronios ficaram brigando entao poderia ser levado en consideracao que todo o ambiente estaria em movimento

[3] Comentário enviado por DarkInner7 em 01/04/2004 - 09:55h

Muito bem sacado, estamos com o mesmo problema, uso isso em minha faculdade para monitorar algumas salas de aula, e tenho o mesm problema, a camera estática é cheia de pontos cegos, detalhe pelo qual tenho que usar camera girando, o problema de girar é simples e já foi resolvido, mas quando eu logo os movimentos, meu HD fica entulhado, ou seja, o proprio movimento da camera é entendido pela configuração como "movimento" e tambem é guardado. Teria algum meio de escanear a area, fazer um MODELO dela, e apenas gravar imagens em HD quando algum objeto diferente do modelo previamente especificado, entrar no campo visual da camera ...?????

[]'s
DarkInner7

[4] Comentário enviado por cabelo em 01/04/2004 - 10:21h

Existe uma solução para este caso, mas não estou no meu micro agora.

Depois eu posto a solução.

[5] Comentário enviado por jeffestanislau em 01/04/2004 - 11:21h

Putz... muito bacana mesmo...
Tão logo seja possível vou querer implementar estes recursos...

Parabéns cabelo...

[6] Comentário enviado por TUK em 01/04/2004 - 12:46h

eae cabelo blza, intão ano passado estava fazendo o trabalho de faculdade e o tema q escolhemos foi esse motion track vision, so que a câmera não acompanhava o objeto pois estavamos com problemas de adaptaçao de rs-232 pra rs-48
mas ta de parabens muito massa...
todos perguntavam se nosso projeto tinha para linux, pois fizemos em windows

[7] Comentário enviado por atilazip em 01/04/2004 - 15:37h

Fantático! blim blim :)

[8] Comentário enviado por atilazip em 01/04/2004 - 15:38h

Isso é Fantático! blim blim :)

[9] Comentário enviado por DarkInner7 em 02/04/2004 - 09:30h

Aguardo sua resposta entao , Cabelo !

[]'s
DarkInner7

[10] Comentário enviado por cabelo em 02/04/2004 - 13:30h

Este software trabalha com uma imagen estática de referencia. Assim detectando movimento quando houver mundança na imagem referenciada.

Se eu entendi bem, este é o problema de voces correto?

http://gspy.sourceforge.net/gspy.jpg

[11] Comentário enviado por wilbil em 04/04/2004 - 16:09h

ola cabelo

este link serv muito bem para esplicar melhor a duvida

quando a camera se movimenta para a direita a imagem de referencia fica dirente pois a camera esta se movendo para outro lugar

como no exemplo que te passei a camera filma a tv estarico mas quando ele se movimente para filmar o sofa ela considera o ambiente como movimento(este e o problema que encontre analizando a teoria do artigo )

já DarkInner7

ele disse que realmente isso que pencei vai acontecer toda a rotacao de camera sera considerada movimento em relacao a imagem estatica

minha duvia e dele ate aonde entendi

nao tem como eu criar mais de uma imagem estatica assim gerando uma imagem panoramica de ida e volta ?

ou entao
poderias criar uma imagem estatica para a camera a 1s outra para 2s (onde ja houve um pouco de rotacao da camera) outras ate 10s depois seriam comparadas 9s ,8s 7s
ate o 0 que seria o inical do movimento?

destes dois modos acho que nao haveria problemas para encher o hd com imagens de movimentos incorertos que na verdade o movimento e de rotacao de camera

[12] Comentário enviado por linuxdeveloper em 16/04/2004 - 09:34h

caro cabelo isso foi show vou pegar minha cam e vou comecar a testar
em relacao aos comentarios tambem vou estar testando meus amigos e qualquer descoberta estarei motificando a todos

[13] Comentário enviado por linuxdeveloper em 16/04/2004 - 09:34h

caro cabelo isso foi show vou pegar minha cam e vou comecar a testar
em relacao aos comentarios tambem vou estar testando meus amigos e qualquer descoberta estarei motificando a todos

[14] Comentário enviado por iunibrasil em 20/04/2004 - 20:15h

SR. MERITICIMO CABELO;

ESTOU MONTADO UM SISTEMA DE 16 CAMERAS DE VIDEO. PICO200 ETAC.
GOSTARIA DE SABER SE EXISTE ALGUM JEITO DE TRABALHAR COM LINUX COMO SISTEMA. POR FAVOR ME AJUDE ESTOU QUASE MORRENDO COM O SANGUE-SUGA DA MICROSOFT.

[15] Comentário enviado por iunibrasil em 20/04/2004 - 20:15h

SR. MERITICIMO CABELO;

ESTOU MONTADO UM SISTEMA DE 16 CAMERAS DE VIDEO. PICO200 ETC.
GOSTARIA DE SABER SE EXISTE ALGUM JEITO DE TRABALHAR COM LINUX COMO SISTEMA. POR FAVOR ME AJUDE ESTOU QUASE MORRENDO COM O SANGUE-SUGA DA MICROSOFT.

[16] Comentário enviado por mkroll em 28/04/2004 - 09:49h

Cabelo,
Eu queria parabanizar pelo projeto realizado.!!!

Estou precisando fazer um projeto semelhante na faculdade.
Eu vou fazer um circuito com dois motores de passo para controlar uma câmera, e a imagens e o controle da câmera será feito por um site na WEB.
Eu estou com dúvida na estrutura de montagem do projeto, pois preciso saber se você usou alguma placa recptora de video ou conectou a câmera direto na porta USB do micro.
Se puder entrar em contato, pois existem algumas outras dúvida na montagem do circuito do controle dos motores.

[17] Comentário enviado por cybertux em 05/05/2004 - 12:09h

show mesmo esta materia, assim q puder vou testar

[18] Comentário enviado por nelson em 09/05/2004 - 13:35h

Maneiro a parada

[19] Comentário enviado por comercio em 18/05/2004 - 21:50h

cara olha tenho um site de comercio eletronico e na minha cidade tem um evento comercial e eu preciso transmitir via web e ao vivo o evento como farei vi seus comentarios sobre alguns assuntos poderia me ajudar informando como faria ficaria muito grato. meu sistema operacional é windos mas preciso demais de ajuda.

o endereço do meu site se quiser dar uma olhada www.comerciodetubarao.com.br

Obrigado

Pedro Benites

[20] Comentário enviado por mkroll em 24/05/2004 - 09:00h

Estou com duvida em relação a configuração da minha webcam no linux.
Eu configurei conforme informado na documentação, mas esta ocorrendo problema para carregar o motion.

Ocorre erro no videodevice /dev/video0, como faço para configurar este arquivo para reconhecer a minha WebCam que esta na porta USB ?

[21] Comentário enviado por robson.dantas em 25/05/2004 - 09:58h

Caro mkroll, rode o comando "dmesg" no seu linux, e verifique onde sua camera usb está (normalmente em /dev/video ou /dev/video0)

certifique-se que ela está rodando.


Cabelo, parabéns pelo artigo. Estou trabalhando em um projeto opensource com linux para streamming via WEB (desenvolvimento de uma distribuição linux + hardware). Colocarei você nos créditos, pois já deu informações importantes sobre o hardware. !


[22] Comentário enviado por biosterlinux em 18/06/2004 - 16:33h

cara vc ta detonando mesmo!! parabéns, te desejo muito sucesso.
de bebedouro para o mundo!

[23] Comentário enviado por glauciator em 25/06/2004 - 11:23h

Cabelo, decididamente seus artigos são leitura obrigatória no mundo Linux. Excelente artigo amigo. Parabéns!

[24] Comentário enviado por mkroll em 11/10/2004 - 01:27h

Gostaria de saber se existe a possibilidade do motion aceitar mais de uma cãmera para ser visualizada, se sim ? como faço para configurar.
Tem como enviar uma mensagem de e-mail, avisando que houve movimento ?
fico no aguardo

[25] Comentário enviado por rpadilha em 29/10/2004 - 13:29h

E ae cabelo!
Parabéns pelo projeto.Muito bom.

[26] Comentário enviado por 4l4n 4d0f10 em 01/11/2004 - 16:00h

Cabelo

Goste dessa materia e estou fazendo uma apostila dela aq em casa para ter como manual de ajuda

Continui assim.

PS. preciso de uma materia q é o seguinte

Sou novato em linux, e quero aprender a intalar algum aplicativos aq no meu micro pois instalei o hed 9 e quero saber como instalas sw no hed 9 tem gento de vc me orientar em

[27] Comentário enviado por bono em 08/11/2004 - 12:40h

Ae darkInner

Bem, testamos com uma webcam, esse sistema, e a questão do próprio movimento da câmera ser detectado como uma alteração de movimento no ambiente foi resolvida. Tente testar o sistema com uma webcam também. okzz??


E cabelo: Parabéns chapa, very good!! valewzzzz!!!!!

[28] Comentário enviado por smrabelo em 10/11/2004 - 12:32h

Olá cabelo! cara ficou o bicho esse tutorial.; Eu queria saber se tem como implementar para a webcam fazer só o reconhecimento da face com algumas entradas? Porque vou fazer um sisteminha de rede neural só pra reconhecer algumas faces. Se vc poder nos orientar de já agradeço. Obrigado. =)

[29] Comentário enviado por ComeQuieto em 20/12/2004 - 21:55h

Olá cabelo,
Perfeito seu comentário!!
Queria saber o seguinte, além de fazer funcionar com um motor de passo e entender que o movimento da camêra não é um movimento de ambiente, gostaria de saber qual a configuração recomendável para o computador rodar isso.

Obrigado.

[30] Comentário enviado por andrelms em 07/01/2005 - 03:01h

Bom Mudando um pouco de assunto..Eu tenho uma Web Cam Labtec conseguir instalar no meu Linux normal..soh que o programa nao estah reconhecendo..pq eh pra ser instalado no Win...gostaria de saber que programa de Web Cam posso usar no Linux para utiliza a Cam no pc...tirar Foto..filmar etc....Alguem tem ideia????
se tiver me falem ae..que estou procurando esse programa e nao acho....entrem em contato comigo ok e-mail/msn andre_lms@hotmail.com
obrigado!
abraços!

[31] Comentário enviado por fernandoamador em 16/01/2005 - 05:28h

Ótimo Artigo.

[32] Comentário enviado por adm_gus em 18/01/2005 - 16:21h

Ola Cabelo,
Estou testando neste momento o teu tutorial, contudo, no Fedora Core 3 nao rolou o ffmpeg e, por consequencia, o motion nao compilou corretamente. Que distro voce usou ? Instalacao Full ?
Obrigado e parabens !

[33] Comentário enviado por removido em 01/02/2005 - 12:08h

iai galera!? tenho uma duvida, posso usar esse detector de movimentos para apenas tirar o computador do screensaver? penso que seria algo bem simples e não precisa gravar nada no disco. Se alguem puder me ajudar agradeco!

[34] Comentário enviado por cld em 04/02/2005 - 16:36h

Muito bom, excelente! vou usar-lo em breve!

[35] Comentário enviado por pedropas em 17/10/2005 - 18:17h

KBlo,
vc não é fraco não,
Ainda vou ficar bom que nem vc
{]´s Pepê

[36] Comentário enviado por moroni04 em 29/11/2005 - 10:22h

E ai blz sou o JSB e preciso de algumas dicas:
1 se consigo instalar mais de uma camara e dividir em quadros no monitor.
2 Se existe uma distancia dos cabos e qual seria se for positivo?
3 Se consigo acessar via internet de um outro local e se tambem gravaria nesse local? Valeu pelo toque e se precisarem de cartuchos remanu ligue p/ 11 3423 8309.

[37] Comentário enviado por hernandi em 20/12/2005 - 16:13h

Olá. Tem as cameras Pico2000, as quais todas utilizam o famoso BT 878. Este pode ser usado no linux sem quaisquer problemas, mas nao pode ser utilizado da forma como é no programa que ele possui. E custa 100R$ cada plaquinha! Muitas das placas de captura do comercio possuem o bt878 como procesasdor de video.

[38] Comentário enviado por erhnamdjinm em 26/01/2006 - 18:49h

Quais os requisitos de hardware para implementar o sistema?

[39] Comentário enviado por leosallesdf em 01/03/2006 - 17:49h

Olá Cabelo, como faço pra controlar esse motor de passo via web?

[40] Comentário enviado por BornSlip em 21/04/2006 - 08:46h

Cabelo, cá estou em, em 2006, 2 anos após a publicação do seu artigo e foi muito bom. Achei o ladrão que esvaziava a geladeira de casa heheh, isso mesmo, usei o motion pra mointorar o acesso a cozinha da minha casa, e adivinhem só.... descobri pq todos os dias a geladeira amanhecia parecendo o polo norte, só gelo e água.

[41] Comentário enviado por juliaojunior em 11/10/2006 - 15:49h

Muito bom!!! Testarei o mais rápido possível.

[42] Comentário enviado por marcelcga em 20/01/2007 - 14:50h

deu certo, mais esta tudo verde... sera que vc pode me ajudar nesse problema?

[43] Comentário enviado por marcelcga em 20/01/2007 - 15:51h

ja resolvi, obrigado...

[44] Comentário enviado por marcelcga em 20/01/2007 - 16:06h

esta rodando 100% sera que da para colocar mais de uma camera?

[45] Comentário enviado por robsonjrce em 28/05/2007 - 16:26h

Seria possivel monitorar mais de uma camera, Simultaneamente? E aos que ja conseguiram implantar esse programa, pergunto: Como deixar a webcam longe do pc? digo, o pc em um quarto e a camera em outra localidade? Seria com extenção de cabo usb?

[46] Comentário enviado por tarcisioman em 29/04/2008 - 15:02h

Muito bom cara!
Vou implementar isso na minha casa e na minha empresa!
Vlws mesmo!

[47] Comentário enviado por menezes32 em 21/06/2008 - 22:09h

VC PODERIA ME REPASSAR SEU EMIAL? GOSTARIA DE INFORMAÇÕES ADICIONAIS SOBRE O VIDEO MONITORAMENTO! O MEU É ERICBARROSMENEZES@GMAIL.COM.

GRATO!

[48] Comentário enviado por luizmanaus em 29/01/2009 - 18:23h

ola boa tarde gostaria desaber se existe uma versao motion compativel com linux xandros ou se terei de estalar um outro programa, omeu computado e u eeepc asus 512 ram 4 gb + 8 gb ,procesador 0,9, e muito bacana e gostaria de exercuta esta fasanha com meu pequeno grerreiro branco ele ja e proverdo de internet. da casa por favor me ajude

[49] Comentário enviado por higuin em 02/02/2009 - 00:07h

ola boa noite estou precisando de uma ajudinha...

# motion -t/seguranca/
config_thread
thread0 device: /dev/video0 input: 1
waiting for threads to finish, pid: 31329
#

[50] Comentário enviado por paravasco em 10/02/2009 - 17:47h

Show de bola Garoto! Dificil um artigo ficar vivo + de 5 ANOS, P A R A B E N S! E pra meu alivio q bom ainda encontrar tão
valiosa colaboração ao mundo Lin!


Preciso viabilizar um sistema de controle de acesso, e acredito q vc e o Indio tenha a solução.
Gostaria q vc me adicionasse paravasco@hotmail.com para batermos uma bola a respeito.

VAleu ai Indio, PARABENS!!!!!!!


[51] Comentário enviado por removido em 15/06/2009 - 18:36h

Eita, sinto muito , mais o tutorial está faltando alguns detalhes que me impossibilita seguir os passos , pois tentei 3 vezes e nada...
Me enrrosquei na parte de criar o diretório motion.conf ..
Primeira vez que não consigo algo seguindo o mestre cabelo depois de 3 anos..

[52] Comentário enviado por sergiovl em 27/04/2010 - 18:16h

Boa cabelo!

[53] Comentário enviado por j.c.o.s em 19/02/2017 - 12:48h

Pessoal, boa tarde, eu fiz toda a configuração, e consigo visualizar minha webcam de boa, configurei a autentificação, e configurar um app no meu celular que também funciona perfeitamente, porem na rede externa o sistema não funciona, se eu tiver na rede 4G 3G etc eu não consigo visualizar a webcam, alguém poderia me ajudar por favor?
Obrigado


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts