65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Intel® Edison 上的网络摄像头进行条形码扫描

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2015 年 12 月 16 日

CPOL

2分钟阅读

viewsIcon

22400

由于条码扫描已成为移动设备的标准功能,人们可能会希望启用英特尔®爱迪生平台来运行自动条码扫描。

获取全新的英特尔®物联网开发者套件,这是一种完整的硬件和软件解决方案,允许开发者使用英特尔®伽利略和英特尔®爱迪生板创建令人兴奋的新解决方案。请访问英特尔®开发者专区,了解物联网

由于条码扫描已成为移动设备的标准功能,人们可能会希望启用英特尔®爱迪生平台来运行自动条码扫描。

Linux 条码 API

在 Linux 上,有功能齐全的开源条码读取库可用,例如 zxing (Apache 2) 或 ZBar (LGPL 2.1)。虽然 zxing 专注于 Java,但 ZBar 具有 C 实现,因此不需要 Java 运行时环境。在以下描述中,我们将使用 ZBar API。

英特尔®爱迪生平台上的 USB 网络摄像头

借助英特尔®爱迪生平台的最新 Yocto 镜像,UVC USB 摄像头的驱动程序已经包含在内,您可以直接使用这些摄像头。对于其他摄像头,例如 gspca 网络摄像头,您可能需要在先构建驱动程序后才能使用摄像头。

安装 ZBar

我们希望能够使用 zbar 处理实时视频以及静态图像。对于后者,我们需要 ImageMagick 库,您可以从 repo.opkg.net 安装包含所有依赖项的库,方法如下:

# opkg install imagemagick_dev
# wget http://sourceforge.net/projects/zbar/files/zbar/0.10/zbar-0.10.tar.bz2
# cd zbar-0.10
# ./configure --without-qt --without-gtk --without-xv --without-xshm --with-imagemagick --with-x=no --prefix="/usr" 
[...]

which should end after some time with

 [...]
please verify that the detected configuration matches your expectations:
------------------------------------------------------------------------
[...]
X                 --with-x=disabled
pthreads          --enable-pthread=yes
v4l               --enable-video=yes
jpeg              --with-jpeg=yes
Magick++          --with-imagemagick=yes
Python            --with-python=yes
GTK+              --with-gtk=no
        => the GTK+ widget will *NOT* be built
Qt4               --with-qt=no
        => the Qt4 widget will *NOT* be built

不幸的是,libtool 设置似乎无法完全正常工作。因此,调用 "make" 时出现错误消息。为了完成编译和安装,我使用了以下解决方法:

# rm libtool
# ln -s /usr/bin/libtool libtool
# make
# make install

如果您没有安装 "/usr/bin/libtool",可以在 repo.opkg.net 上找到一个软件包。

成功安装后,您应该找到 2 个二进制文件 "/usr/bin/zbarimg" 和 "/usr/bin/zbarcam"。前者是从静态图像读取条码的示例二进制文件。后者直接从实时视频流读取:

# zbarcam --nodisplay

如果您在英特尔®爱迪生平台上安装了 OpenCV,您还可以将 zbar 和 OpenCV 结合使用,以便在检测之前运行一些图像处理(例如,OpenCV & ZBar 示例)。

© . All rights reserved.