ARTIGOS:ZBAR leitura de código de barras a Webcam

Ir para: navegação, pesquisa

" 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"

Zbar.png

Introdução

ZBar é 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 Python, C/C++ 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.

ZBar: 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.

Zbar03.png

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:

Zebra03.png

Jogo rápido: Download, compilação, instalação e execução

Instalação a partir do código fonte.

Sem muito BLA, BLA, BLA... o download pode ser efetuado no site do projeto ZBar . Utilize o comando "tar -zxvf" para extrair o pacote. Depois os comandos "configure", "make" e "make install" conforme o exemplo a seguir.

$ wget http://downloads.sourceforge.net/project/zbar/zbar/0.10/zbar-0.10.tar.bz2 $ tar -jxvf zbar-0.10.tar.bz2 $ cd zbar-0.10/ $ ./configure $ make $ sudo make install

Usuários openSUSE 1-Click Install

1click.jpg Os felizes usuários do sistema openSUSE também podem optar pela instalação 1-Click Install repositório de software.

Execução e usabilidade

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:

Zebra05.jpg

$ 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: (Alessandro de Oliveira Faria A.K.A.CABELO )