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.

[ Hits: 92.240 ]

Por: Alessandro de Oliveira Faria (A.K.A. CABELO) em 06/10/2008 | Blog: http://assuntonerd.com.br


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.
Linux: Zebra Barcode e imagem
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

Página anterior    

Páginas do artigo
   1. Introdução
   2. Jogo rápido: Download, compilação, instalação e execução
Outros artigos deste autor

Xtraceroute: O traceroute tridimensional

Android NDK: Desmistificando o acesso a códigos nativos em C

Impressione seus amigos com o Tux bonitinho no login modo console

Interface Gráfica e Ambiente Integrado p/ Free Pascal

Visão Computacional - Reconhecendo objetos na plataforma Linux via Webcam

Leitura recomendada

Configurando a placa de rede wireless RTL8187 no Ubuntu 9.04

Linux funcionando 100% no Notebook LG LE50 Express

Instalando nVidia no Debian Lenny 5.0.1 - Kernel 2.6.26-2-686

Como gravar o som da sua Zoom G2.1u

Configurando a PixelView PlayTV STBVD Hybrid no Ubuntu 11.04

  
Comentários
[1] Comentário enviado por hebaja em 06/10/2008 - 15:59h

Simplesmente fantástico!

[2] Comentário enviado por fabio em 06/10/2008 - 16:06h

Será que finalmente não vou mais precisar digitar código de barras pra pagar conta pelo Internet Banking? :)
Vou testar. Excelente cabelo!!!

[3] Comentário enviado por renato.leite em 06/10/2008 - 16:36h

Fantástico mesmo, muito maneiro... Otimo artigo xD

[4] Comentário enviado por RCoimbra em 06/10/2008 - 17:16h

Queeeeeeeeeeeeeee isso!!!!!!!!! Artigo show de bola, como disse o Fábio não vou mais precisar digitar código de barras pra pagar contas pelo internet banking!!! kkkkkkk
Sem contar que os artigos do cabelo são sempre diretos!!

Abraços
Cya!

[5] Comentário enviado por tenchi em 06/10/2008 - 19:25h

Achei muito interessante, mas não consegui fazer funcionar com minha webcam. Ela usa v4l1. Eis aqui a saída do comando zebracam em modo verbose:

_zebra_video_open: opened camera device /dev/video0 (fd=5)
WARNING: zebra video in _zebra_v4l2_probe():
unsupported request: video4linux version 2 not supported (VIDIOC_QUERYCAP)
_zebra_v4l1_probe: Flexcam 100 Camera (CAPTURE) (160 x 120) - (352 x 288)
v4l1_init_window: current window: 352 x 288 @(0, 0)
v4l1_probe_formats: current format: BGR3(33524742) depth=24 palette=4
v4l1_set_format: set new format: BGR3(33524742) depth=24 palette=4 size=0x4a400
v4l1_probe_iomode: using 2 images in MMAP mode
WARNING: zebra video in zebra_video_get_fd():
unsupported request: v4l1 API does not support polling
_zebra_window_probe_xv: XVideo extension version 2.2
xv_probe_port: probing port 158 with 1 encodings:
xv_probe_port: max XV_IMAGE size 2046x2046
xv_probe_port: 4 image formats
xv_probe_port: probing port 159 with 1 encodings:
xv_probe_port: max XV_IMAGE size 2046x2046
xv_probe_port: 5 image formats
v4l1_set_format: set new format: YU12(32315559) depth=12 palette=15 size=0x25200
v4l1_mmap_buffers: mapping 2 buffers size=0x258010
WARNING: zebra video in zebra_video_get_fd():
unsupported request: v4l1 API does not support polling
WARNING: zebra processor in x_handle_event():
output window is closed: user closed display window
WARNING: zebra processor in zebra_processor_user_wait():
output window is closed: display window not available for input
_zebra_video_open: closed camera fd=5

E, mais uma vez, sensacional este Cabelo. Descobre cada uma... Este programa é show. Tô pensando em trabsformar meu computador num caixa de super-mercado. Beep! Beep!

[6] Comentário enviado por thyaguvinny em 06/10/2008 - 23:31h

Eu adoro esse careca!!!

[7] Comentário enviado por arkanjo em 07/10/2008 - 20:51h

achei fantastico ... mas isso é pra fazer programas né ??
não tem algo mais pra usuario final ??

pensei em algo assim.
vc abre o programa depois seleciona o campo a ser preenchido com a leitura do codigo de barras, aperta algum botão e mostra a fatura pra camera, ela le e coloca no campo selecionado anteriormente ..
Tipo os leitores de fatura de 100 pila que tem por aí, mas melhor, pq qs todos tem uma camera hoje em dia, ja gastar com um leitor especifico, só quem paga muita conta mesmo ...

Seria fantastico, invez de passar um tempo digitando e errando numeros nos sites de bancos, todo 5° dia util, simplesmente acessar o site, selecionar a opção de pagamento de boleto, marco onde vai o codigo da fatura, aperto algum botão e aproximo a fatura da camera :D

Se ja não tiver, alguem faça aí e coloque no sourceforge o projeto, que acho que faz sucesso :D

[8] Comentário enviado por EDU4RDO_ em 08/10/2008 - 08:32h

Não estou conseguindo instalar. Quando eu dou o ./configure apresenta o seguinte erro:

checking for MAGICK... configure: error: Package requirements (ImageMagick++ >= 6.2.6) were not met:

No package 'ImageMagick++' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables MAGICK_CFLAGS
and MAGICK_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

Eu já instalei o imagemagick e também outros pacotes relacionados a ele, mas o problema continua.

Estou usando Ubuntu, alguem sabe dizer qual é a Lib q realmente esta faltando ou qual é o problema?

Um abraço.

[9] Comentário enviado por maphdelic em 08/10/2008 - 10:09h

Olá, estou com o mesmo problema do colega acima..

"checking for MAGICK... configure: error: Package requirements (ImageMagick++ >= 6.2.6) were not met"

Também uso Ubuntu (hardy). Já instalei todos os pacotes relacionados que encontrei... imagemagick, libgraphicsmagick++1, libmagick++10, graphicsmagick, graphicsmagick-imagemagick-compat, python-pythonmagick, pfstools... só para citar alguns. Fora o que o auto-apt instalou.

Estou ancioso para testar. Quem tiver uma idéia, posta ai!


[10] Comentário enviado por locolinux em 08/10/2008 - 11:34h

Olá,

Estou usando debian etch, consegui instala-lo mas quando tento executar o zebracam me retorna o erro:

zebracam: error while loading shared libraries: libzebra.so.3: cannot open shared object file: No such file or directory

Já procurei na net essa biblioteca mas nada. Você poderia me dar uma ajuda ?

[11] Comentário enviado por Pianista em 08/10/2008 - 17:54h

caramba, como é que pode, meu irmão tu é o cara... nem adiciono mais teus artigos como favoritos, eu só acesso teu perfil e leio bons materiais! :P.. estava até lendo um artigo seu em outro site que eu achei sem querer. E ao ler o artigo e ver quem era o escritor adivinha quem "CABELO"... Parabéns! você mitiva muitas pessoas.. Obrigado!

só por curiosidade o site era esse "http://tecnociencia.inf.br/tecnico/Pianista". estou mandando assim com convite e meu nick como patricinador, pra quem quiser se cadastrar e ler os materias, fiquem a vontade!

Valew!

[12] Comentário enviado por reng.unip em 09/10/2008 - 15:40h

Cabelo, ótimo artigo, meus parabéns.

[13] Comentário enviado por maphdelic em 09/10/2008 - 21:37h

Ok, resolvi dois problemas de dependência ao se configurar o pacote no ubuntu hardy (Kurumin NG, para ser mais expecífico). O auto-apt instalou algumas coisas, mas duas ele não resolveu. Uma é resolvida com o pacote "libmagick++9-dev" e a outra com o "python-gtk2-dev". Com esses dois, mais o auto-apt, consegui configurar. Vamos vwr se eu compilo...

[14] Comentário enviado por maphdelic em 09/10/2008 - 21:42h

Ok, compilei e instalei, mas agora estou com omesmo problema do locolinux, acima.

"quando tento executar o zebracam me retorna o erro:

zebracam: error while loading shared libraries: libzebra.so.3: cannot open shared object file: No such file or directory"

[15] Comentário enviado por maphdelic em 09/10/2008 - 21:51h

Sucesso! Basta fazer "./configure --prefix=/usr" no começo. Só isso, e já consegui rodar.

Dica: enontrei essas e outras informações no fórum do projeto no sourceforge.

[16] Comentário enviado por mondragonbr em 10/10/2008 - 15:53h

parabéns, ótimo artigo!
muito interessante.

[17] Comentário enviado por comfaa em 14/10/2008 - 08:53h

muito 10 esse artigo !!

[18] Comentário enviado por EDU4RDO_ em 31/10/2008 - 11:05h

Alguém sabe dizer algo sobre esse erro?

zebracam
zebracam: error while loading shared libraries: libzebra.so.3: cannot open shared object file: No such file or directory

[19] Comentário enviado por ramon.rdm em 03/01/2009 - 17:37h

Muito interessante!
Esse software pode ser o que estou precisando para um projeto de gerenciamento de produtos!
Mas ao instalar ocorre o seguinte:
checking for MAGICK... configure: error: Package requirements (ImageMagick++ >= 6.2.6) were not met:

No package 'ImageMagick++' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables MAGICK_CFLAGS
and MAGICK_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

Tenho o imagemagick instalado e nada.....
e agora????
alguem saberia me ajudar?
Obrigado e parabens pelo artigo!

[20] Comentário enviado por maa.marcos em 05/01/2009 - 09:45h

Muito bom seu artigo...

Não entendo muito sobre instalação, compilação, etc, etc, etc. Tentei instalar em 3 distros diferentes e não funcionou. Muitos erros na compilação.

Tenho algumas dúvidas sobre o funcionamento:

Funciona apenas com o código de barras na horizontal? E se estiver na vertical, inclinado 45% ou de cabeça pra baixo?
O que acontece se mostrarmos 2 ou mais códigos de barras ao mesmo tempo?
Poderia indicar outros vídeos mostrando estas funcionalidades?
Existem outros projetos com o mesmo objetivo?


Grato,

[21] Comentário enviado por rarmor em 14/01/2010 - 12:45h

Grande artigo, muito bom mesmo.

Para os colegas que como eu utilizam utilizam o Ubuntu 9.04 ou afins eu instalei utilizando o comando:
$sudo apt-get install zebra-tools

lá...... lalá..... lalalá.....

pronto

$sudo zebracam

Espero ter ajudado.

[22] Comentário enviado por eduslack em 22/01/2010 - 23:13h

O site do projeto agora é em: http://sourceforge.net/projects/zbar/files/

[23] Comentário enviado por wcoutinho em 23/04/2010 - 02:02h

depois de muito tempo baixando libs.
quando tudo funcionou direitnho eu fui usar o comando zebraimg
veio a resposta
zebraimg: command not found

como resolvo isso?

[24] Comentário enviado por wcoutinho em 23/04/2010 - 02:19h

achei o problema.

na versao que eu uso do zebra o comando eh
zbraimg

valeu

[25] Comentário enviado por marcinhoCP em 29/07/2010 - 16:21h

muito bom o artigo!!!

quando eu coloco o comando ./configure dá esse erro.

4) were not met:

No package 'QtCore' found
No package 'QtGui' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables QT_CFLAGS
and QT_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

alguem sabe me dizer como posso resolver?

[26] Comentário enviado por Iron Fist em 23/08/2010 - 22:02h

qual é o tamanho máximo que ele consegue ler? qualquer barcode? inclusive de contas boleto bancário?

[27] Comentário enviado por tiekookeit em 18/12/2010 - 10:40h

Parece que tiraram o projeto do ar, alguém tem o pacote ai para me enviar???



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts