搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
空白诗007
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
Jenkins安装后启动报错记录:java.lang.NullPointerException_jenkins java.lang.nullpointerexception
2
不同 Android Studio 版本的 SDK 及 NDK 选择_android studio sdk选哪个版本
3
mysql left join 只要一条_mysql:left join但是从连接表中选择一个特定项
4
社交媒体分享预览图片和内容修改
5
【笔记】 如何使用ChatGPT得到更满意的结果:Prompt Engineering (1)_chatgpt step by step
6
Kafka抛弃Zookeeper后如何启动?_kakfa不再使用zk
7
SQL Server2014数据库开启远程连接_remoteaccessenabled
8
python的selenuim爬虫爬取实例_sele爬虫点击标题跳转的链接怎么看
9
Android电话拨打流程源码分析
10
【主题建模】不同策略的主题建模方法比较_主题建模算法
当前位置:
article
> 正文
移植二维码识别库zbar到linux系统arm嵌入式设备_如何将zbar移植到zynq
作者:空白诗007 | 2024-08-13 11:13:50
赞
踩
如何将zbar移植到zynq
移植二维码识别库zbar到linux系统arm嵌入式设备
目标:
1.将zbar源码移植到linux arm or mips架构设备上
2.打开摄像头并运行zbar算法进行一维码,二维码识别。
3.调试与优化
一、下载zbar源码
下载路径:
http://zbar.sourceforge.net/download.html
解压命令: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)
https://download.csdn.net/download/lwjian147/10439103?utm_source=bbsseo
四、嵌入式设备实测
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算法业务逻辑处理等 强相关)
欢迎来信探讨。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/空白诗007/article/detail/974550
推荐阅读
article
Embedded
Linux
S3C2440
- USB
Gadget
Drivers...
文章目录SummaryBasicsUsing
S3C2440
as a USB HostUsing
S3C2440
as...
赞
踩
article
Python学习
----
pysp
i
der
(l
i
nux)(一)_[
i
23
0
6
0
6 11
:
27
:
47 ...
官方文档:http
:
//docs.
pysp
i
der
.org/en/latest/Anaconda使用请参考:https
:
...
赞
踩
article
Linux
-
进程
的概念
、
状态
、
僵尸
进程
、
孤儿
进程
及
进程
优先级
...
进程
基本概念;描述
进程
-PCB;查看
进程
:通过系统目录查看
、
通过ps命令查看;通过系统调用获取
进程
的PID和PPID;通...
赞
踩
article
Linux
在线和离线安装
MySQL
_
my2sql
下载
...
1 linux的常用软件安装配置阿里云的yum源1) 安装wget[root@localhost ~]# yum -y ...
赞
踩
article
推荐:
Windows
&
Linux
基线
检查
工具
及
配置
文档...
推荐:
Windows
&
Linux
基线
检查
工具
及
配置
文档项目地址:https://gitcode.com/tangj...
赞
踩
article
服务器
(
AIX
、
Linux
、
UNIX
)性能监视器工具【
nmon
】使用介绍_
aix
nmon
...
===_
aix
nmon
aix
nmon
目录 ■
nmon
简介 1.安装 2.使用简介 ...
赞
踩
article
linux
--
gitblit
安装_
linux
安装
gitblit
...
linux
--
gitblit
安装
linux
搭建git服务器1、
linux
服务器搭建git服务器:yum install...
赞
踩
article
openssl
配置
linux
,
openssl
安装配置...
安装
openssl
# tar –zxvf
openssl
# cd
openssl
# ./config --prefix=...
赞
踩
article
【
Linux
】
make
/
Makefile
——项目
自动化
构建
工具
...
详细讲解了linux中项目
自动化
构建
工具
make
/
Makefile
的原理和使用【
Linux
】
make
/Makefi...
赞
踩
article
linux
简单
重定向
代码
,
Linux
Shell
编程
(26)——
代码
块
重定向
...
像 while, until, 和 for 循环
代码
块, 甚至 if/then 测试结构的
代码
块都能做到标准输入的
重定向
...
赞
踩
article
Linux
&
Shell
编程基础——
构建
基本
脚本
...
Shell
脚本
是一种强大的自动化工具,允许用户将多个命令组织在一起,处理命令输出,并通过文本消息向用户反馈
脚本
的执行情况...
赞
踩
article
Linux
&
Shell
编程基础——
构建
基本
脚本
_
shell
语言
和
liunx
脚本
...
在创建
shell
脚本
文件时,必须在文件的第一行指定要使用的
shell
。①
构建
一个
脚本
文件执行创建新用户、给新用户分组、查...
赞
踩
article
【
Linux
】利用
消息
队列
实现
一个
简单的
进程
间
双向通信
(两种方式)_
进程
间通信
选择
一个
队列
还是两个队...
在实现利用
消息
队列
的
进程
间通信
之前,先了解一下基本的概念和所需要用到的函数。
消息
队列
消息
队列
是
Linux
内核地址空间中的...
赞
踩
article
Linux
——
进程
概念详解_
linux
中
kp
进程
用法
讲解
...
文章详细介绍了
进程
的概念,PCB(
进程
控制块)的作用,以及操作系统如何通过PCB管理
进程
。在Windows和
Linux
系...
赞
踩
article
Linux
:进程
信号
(一.认识
信号
、
信号
的
产生
及深层理解、
Term
与
Core
)_
term
linux
...
1.认识
信号
进程看待
信号
方式2.
信号
的
产生
2.1
信号
的处理的方式 --- signal()函数2.2kil指令
产生
信号
2...
赞
踩
article
【
linux
】
进程
信号
——
信号
的
产生
_
进程
接收
到
信号
...
信号
的
产生
_
进程
接收
到
信号
进程
接收
到
信号
进程
信号
一...
赞
踩
article
Linux
下
Clang
-
format
代码
格式化_
clang
-
format
linux...
本文介绍了如何在
Linux
环境下使用
Clang
-
format
工具来统一
代码
格式,包括安装、基本使用方法以及如何自定义
代码
...
赞
踩
article
Linux
、麒麟
系统
挂载
硬盘、挂在
Windows
硬盘,不使用格式化直接
挂载
_麒麟
系统
挂载
window...
Linux
、麒麟
系统
挂载
硬盘、挂在
Windows
硬盘_麒麟
系统
挂载
windows
硬盘麒麟
系统
挂载
windows
硬盘 ...
赞
踩
article
[MAC
苹果电脑
] [
Linux
系统
] ”
苹果电脑
使用
虚拟机
安装
Linux
Ubuntu
系统
”...
一.前述 研究员买了MAC
苹果电脑
后,大多想到的一件事:能不能再装一个
Linux
系统
。 MAC的强大办公能力+ L...
赞
踩
article
utm
虚拟机
安装
linux
,
UTM
: 在
iOS
上
安装
Windows
或 Linux 等系统及虚...
Apps& Tweaks|Jailbreak Guide|iDevices
UTM
Version: 2.0.20Repo:...
赞
踩
相关标签
linux
s3c2440
embedded
usb
gadget
python
spider
爬虫
运维
服务器
git
openssl 配置 linux
自动化
linux简单重定向代码
消息队列
LINUX
进程通信
c语言