ブログ

Armadillo-X1:カメラの画像からQRコードを読む(zbarcam)

at_kazutaka.bito
2017年6月2日 19時31分

Armadillo-X1で、カメラの画像からQRコードを読む方法(zbarcam)です。カメラはUSBカメラを使用しました。 当方が確認したのは、Armadillo-X1ですが、Armadillo-IoT(G3/G3L)も同様の手順が使えるはずです。

1.必要なパッケージのインストール

Armadiilo-X1をインターネットにつながるネットワークに接続します。
下記のように、apt-getコマンドを使って、パッケージのアップグレードと、libzbar0、zbar-tools、imagemagickのインストールを行います。

root@armadillo:~# apt-get update & apt-get upgrade
root@armadillo:~# apt-get install libzbar0
root@armadillo:~# apt-get install zbar-tools
root@armadillo:~# apt-get install imagemagick

2.PCでカメラの画像を見れるようにする

QRコードの認識自体には必要ありませんが、QRコードの画像の位置が見えないと不便なので、ネットワーク経由でカメラの画像をPCで見れるようにします。 ここでは、ATDE上に表示させます。

ATDEの/etc/gdm3/daemon.confを編集します。

atmark@atde6:~$ sudo gedit /etc/gdm3/daemon.conf

で/etc/gdm3/daemon.confファイルを開いて、[security]箇所に下記のように追加します。

[security]
DisallowTCP=false

上記の編集後、ATDEを再起動してください。

ATDE起動後、下記のようにxhostコマンドを実行します。

atmark@atde6:~$ xhost +
access control disabled, clients can connect from any host

3.QRコードを読む(zbarcamの実行)

Armadillo-X1で、下記のようにzbarcamを実行すると、上記2でxhostを実行中のATDEにカメラの画像が表示されます。 QRコードを検出すると、
 Armadillo-X1の標準出力にQRコードの値が表示されます。
 ATDEのカメラの画像では、QRコードに緑線の淵が表示されます。
(ATDEのIPアドレスが192.168.11.35の場合)

DISPLAY=192.168.11.35:0 zbarcam --prescale=320x240 /dev/video0

カメラとQRコードの位置が固定となって、画像が不要な場合は、下記のように実行します。

zbarcam --nodisplay --prescale=320x240 /dev/video0