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.
Introdução

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