使用 Intel® Edison 上的网络摄像头进行条形码扫描
由于条码扫描已成为移动设备的标准功能,人们可能会希望启用英特尔®爱迪生平台来运行自动条码扫描。
获取全新的英特尔®物联网开发者套件,这是一种完整的硬件和软件解决方案,允许开发者使用英特尔®伽利略和英特尔®爱迪生板创建令人兴奋的新解决方案。访问英特尔®开发者专区,了解物联网。
由于条码扫描已成为移动设备的标准功能,人们可能会希望启用英特尔®爱迪生平台来运行自动条码扫描。
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 示例)