Infra - Linux
Zebra Barcode Reader: Lendo código de barras com a sua Webcam no Linux
Neste breve documento veremos como efetuar a leitura de código de barras utilizando uma webcam compatível com a API V4L1 ou V4L2. Além de mostrar a força do software livre, este recurso proporciona inúmeras aplicabilidades.
por Alessandro de Oliveira FariaIntrodução
Zebra Barcode Reader é uma solução de código aberto que roda em Linux capaz de decodificar um código de barras presente no vídeo ao vivo (WebCam ou placa de captura), como também processar arquivos de imagem. Este projeto suporta os tipos mais populares de código de barras, abaixo os padrões testado na NETi TECNOLOGIA:
O pacote conta com 2 aplicativos com fins demonstrativos:
Pontos fortes do projeto:
Zebra Barcode Reader: Como funciona?
Uma imagem contendo o código de barras é enviada para processamento. O pacote zebra utiliza técnicas eficazes para a localização e decodificação do código de barras. O resultado final é semelhante aos leitores que encontramos em supermercado. A seguir uma breve explicação sobre o funcionamento da biblioteca.
A imagem é extraída no dispositivo de vídeo captura, capaz de produzir fluxo de vídeo contínuo. A versão atual trabalha com APIs video4linux (versão 1 e 2). Entretanto, existem planos futuros para adicionar o DirectShow (Windows).
A imagem capturada no dispositivo é exibida na janela de visualização (GUI sobre o X11 - Xvideo e Ximage). Podemos dizer que a principal função desta camada é o monitoramento da imagem.
Nesta etapa possuímos uma imagem obtida de uma webcam ou de uma unidade de armazenamento, onde é efetuada a varredura e processamento da imagem bidimensional.
A seguir é calculada a largura das barras para uma posterior decodificação. A decodificação acontece com a busca das seqüências de barras e identificação dos respectivos padrões (UPC-A, UPC-E, EAN-8, Code 128 e Code 39).
Vejam a seguir uma ilustração do projeto com a minha implementação de localização de face:
Jogo rápido: Download, compilação, instalação e execução
Sem muito BLA, BLA, BLA... o download pode ser efetuado no site do Zebra Barcode Reader . Utilize o comando "tar -zxvf" para extrair o pacote. Depois os comandos "configure", "make" e "make install" conforme o exemplo a seguir.
$ wget http://ufpr.dl.sourceforge.net/sourceforge/zebra/zebra-0.5.tar.bz2
$ tar -jxvf zebra-0.5.tar.bz2
$ cd zebra-0.5/
$ ./configure
$ make
$ sudo make install
Agora utilize a imagem abaixo para testar a decodificação a partir de uma imagem armazenada no disco. O programa Kbarcode foi utilizado para criar todas as imagens com os códigos de barras para testes.
A decodificação da imagem deve ser executada com o comando zebraimg, conforme o exemplo abaixo:
$ zebraimg zebra04.jpg
EAN-8:01234565
scanned 1 barcode symbols from 1 images in 0.06 second
Para ler código de barras de imagens ao vivo, basta plugar a sua webcam e executar o comando zebracam.
Abaixo um vídeo demonstrando a funcionalidade a eficiência do projeto. Como sempre optei em elaborar um texto objetivo e prático. Maiores detalhes o leitor pode obter na página do próprio projeto.
Acredito que este projeto pode abrir portas para outros projetos, como por exemplo um relógio de ponto onde a face e o código é capturado (assim inibindo a fraude de troca de cartões entre funcionários). Ressalto que não estou falando de biometria e sim de um sistema que obrigatoriamente armazena o rosto do usuário que efetuou a leitura do cartão.
Como sempre menciono: Colaborar atrai amigos, competir atrai inimigos...
Sobre o autor: http://www.netitec.com.br/alessandro
Zebra Barcode Reader é uma solução de código aberto que roda em Linux capaz de decodificar um código de barras presente no vídeo ao vivo (WebCam ou placa de captura), como também processar arquivos de imagem. Este projeto suporta os tipos mais populares de código de barras, abaixo os padrões testado na NETi TECNOLOGIA:
- EAN-13/UPC-A;
- EAN-8;
- CODE 128;
- CODE 39;
- 2 de 5 intercalado.
O pacote conta com 2 aplicativos com fins demonstrativos:
- decodificador de imagens, que faz captura de um dispositivo de vídeo (como Webcam);
- decodificador de códigos presentes em imagens gravadas no disco.
Pontos fortes do projeto:
- Compatibilidade com QT e Gtk;
- Alta velocidade;
- Baixo uso de memória (aproximadamente 1K módulo de descodificação EAN);
- Não limitado ao uso de imagens estáticas;
- Não utiliza operação de ponto flutuante;
- Adequado para processadores embarcados com baixo poder de processamento;
- Componente modulares, assim podendo utilizá-los juntos ou separadamente.
Zebra Barcode Reader: Como funciona?
Uma imagem contendo o código de barras é enviada para processamento. O pacote zebra utiliza técnicas eficazes para a localização e decodificação do código de barras. O resultado final é semelhante aos leitores que encontramos em supermercado. A seguir uma breve explicação sobre o funcionamento da biblioteca.
A imagem é extraída no dispositivo de vídeo captura, capaz de produzir fluxo de vídeo contínuo. A versão atual trabalha com APIs video4linux (versão 1 e 2). Entretanto, existem planos futuros para adicionar o DirectShow (Windows).
A imagem capturada no dispositivo é exibida na janela de visualização (GUI sobre o X11 - Xvideo e Ximage). Podemos dizer que a principal função desta camada é o monitoramento da imagem.
Nesta etapa possuímos uma imagem obtida de uma webcam ou de uma unidade de armazenamento, onde é efetuada a varredura e processamento da imagem bidimensional.
A seguir é calculada a largura das barras para uma posterior decodificação. A decodificação acontece com a busca das seqüências de barras e identificação dos respectivos padrões (UPC-A, UPC-E, EAN-8, Code 128 e Code 39).
Vejam a seguir uma ilustração do projeto com a minha implementação de localização de face:
Jogo rápido: Download, compilação, instalação e execução
Sem muito BLA, BLA, BLA... o download pode ser efetuado no site do Zebra Barcode Reader . Utilize o comando "tar -zxvf" para extrair o pacote. Depois os comandos "configure", "make" e "make install" conforme o exemplo a seguir.
$ wget http://ufpr.dl.sourceforge.net/sourceforge/zebra/zebra-0.5.tar.bz2
$ tar -jxvf zebra-0.5.tar.bz2
$ cd zebra-0.5/
$ ./configure
$ make
$ sudo make install
Agora utilize a imagem abaixo para testar a decodificação a partir de uma imagem armazenada no disco. O programa Kbarcode foi utilizado para criar todas as imagens com os códigos de barras para testes.
A decodificação da imagem deve ser executada com o comando zebraimg, conforme o exemplo abaixo:
$ zebraimg zebra04.jpg
EAN-8:01234565
scanned 1 barcode symbols from 1 images in 0.06 second
Para ler código de barras de imagens ao vivo, basta plugar a sua webcam e executar o comando zebracam.
Abaixo um vídeo demonstrando a funcionalidade a eficiência do projeto. Como sempre optei em elaborar um texto objetivo e prático. Maiores detalhes o leitor pode obter na página do próprio projeto.
Acredito que este projeto pode abrir portas para outros projetos, como por exemplo um relógio de ponto onde a face e o código é capturado (assim inibindo a fraude de troca de cartões entre funcionários). Ressalto que não estou falando de biometria e sim de um sistema que obrigatoriamente armazena o rosto do usuário que efetuou a leitura do cartão.
Como sempre menciono: Colaborar atrai amigos, competir atrai inimigos...
Sobre o autor: http://www.netitec.com.br/alessandro
- 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