移植二维码识别库zbar到linux系统arm嵌入式设备

移植二维码识别库zbar到linux系统arm嵌入式设备

目标:
1.将zbar源码移植到linux arm or mips架构设备上
2.打开摄像头并运行zbar算法进行一维码,二维码识别。
3.调试与优化

一、下载zbar源码
下载路径:
解压命令:tar jxvf zbar-0.10.tar.bz2

zbar源码貌似已经停止更新了,虽然支持的码类不是很丰富,但主流的QRcode,Code128,EAN code等还是支持的。

二、编译源码
1.方法一:如果能将上述源码编译脚本修改好,合入嵌入式设备的codebase里一起编译,也是可以的,但貌似修改的工作量不少。
2.方法二:可以选择在ubuntu上交叉编译。配置好编译工具链,根据需要配选zbar的功能,例如
./configure --enable-shared --without-python --without-gtk --without-qt --without-imagemagick CFLAGS=""
去掉python,gtk,qt,imagemagic这些可能用不到的功能。

3.编译后的主要结果:
├── include
│   ├── zbar
│   │   ├── Decoder.h
│   │   ├── Exception.h
│   │   ├── Image.h
│   │   ├── ImageScanner.h
│   │   ├── Processor.h
│   │   ├── Scanner.h
│   │   ├── Symbol.h
│   │   ├── Video.h
│   │   └── Window.h
│   └── zbar.h
├── lib
│   ├── libzbar.a
│   ├── libzbar.la
│   ├── libzbar.so -> libzbar.so.0.2.0
│   ├── libzbar.so.0 -> libzbar.so.0.2.0
│   ├── libzbar.so.0.2.0

编译后可以用file命令 查看是否是嵌入式设备所支持的类型,否则交叉编译工具链没配置好!
命令如:
==arm架构:
$ file libzbar.so.0.2.0
libzbar.so.0.2.0: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), not stripped

==mips架构
$ file libzbar.so.0.2.0
libzbar.so.0.2.0: ELF 32-bit LSB shared object, MIPS, MIPS32 rel2 version 1 (SYSV), dynamically linked, not stripped



三、测试程序
编写一个测试程序,可以在嵌入式目标板可运行,(ps:没有采用opencv方式,主要是相关库太占资源)
主要功能:
a.打开摄像头
b.调用zbar算法
c.输出结果。

1. 打开摄像头
主要还是利用v4l的相关库来调用摄像头,注意不同平台的linux系统,摄像头的驱动节点有些差异,例如部分 /dev/video0 ,或 /dev/video1或其他命名的节点。这个编写测试程序是需要提前确认。

2.调用zbar算法
调用前需要配置一些参数:摄像头节点、
摄像头数据格式, 例如YUYV、分辨率、debug等级、
是否显示,注意zbar的显示依赖x相关库,并不是所有linux平台都支持、
解码后显示的格式等。
后面就调用zbar_processor_create等函数,创建线程,获取视频内容进行识别,
结果通过回调函数输出。

3.输出结果
a.方法一:可以通过回调函数 串口uart调试信息输出,查看。
b.方法二:如果设备需要usb hid 输出,则需要 嵌入式设备支持usb hid功能。
嵌入式设备usb hid打通关键:
(1).设备支持gadget,可以通过节点dev/hidg0判断。
(2).usb hid 设备相关描述符
linux usb hid 设备端测试程序:(支持arm 或 mips)

四、嵌入式设备实测
1. 将编译好的zbar相关库 合入目标板系统,例如system/lib/下
2. 将编译好的测试程序,push到目标板,例如 system/bin下
3. 上述内容可能需要修改权限才能执行,例如,chmod 777 xxx
4. 部分设备可以挂载t卡,可以将上述内容放在t卡,然后挂载t卡之后拷贝到对应目录。

运行识别测试程序,实测zbar的算法,
a.能正确识别主流的QRcode,code128,ean code等
b.对于准确率来说,能识别出来的,基本没有错误的。(排除usb hid传输异常)
c. 用zbar算法识别纯二维码图片,识别时间约200ms;
c. 在目标板上单纯打开摄像头+执行zbar识别算法的测试程序,识别时效实测大约在500ms~850ms之间,
d. 整机综合测试,主观感受识别时间在1s以内。(与摄像头、目标板主控性能,主要功能业务与zbar算法业务逻辑处理等 强相关)


欢迎来信探讨。

  • 0
    点赞
  • 4
    评论
  • 13
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

评论4
请先登录 后发表评论~
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页

打赏作者

lwjian147

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值