PCでQRコードを読む方法(WEBカメラを使う)

ウェブカメラ例
アプリ

皆様こんにちは。今日はPCを使ってQRコードを使い何らかの処理をさせるというお話です。QRは様々なデータを埋め込めるのでそれをきっかけに何かの処理をするなどに使うと最適です。様々な便利処理を行うことができます。

利用例

本の貸出用

本の貸出の際に、本にQRコードをつけておけば状態管理に便利です。

出退勤管理

出社、退社をQRコードに埋め込んだIDにより管理したりできます。

その他使用例

梱包・格納、ピッキング、棚卸、入荷検品、工程管理、偽造品対策、乗車管理、クーポン配信、調剤・処方せん、入場管理
詳細は以下より見れます。QRコードドットコム

いかがでしょうか。工夫次第で非常に用途は多岐に渡ります。便利につかえるQRコードですがPCのウェブカメラでも読めますのでPCと連携することもできますね。その他の方法としてスマートフォンと連携させる方法があります。この場合はスマホアプリの開発が必要になってきます。

PCで読む際の注意点(QRコードの読めるWebカメラ)

まずカメラの選定が大事です。ウェブカメラは一般に40cmほど離して使うことが多く近くのものにピントを合わせるのが難しい製品が多いです。

そのため近くのものにピントを合わせられる製品を選ぶ必要があります。それほど多くないので一点ご紹介いたします。

こちらの製品ですと120文字程度のデータをQR化し、2.2cmに印刷したものを読み取ることができることを確認済みです。文字数(データ量)によりQRの一つのデータのドットが小さくなるので文字数を詰め込むほど読み取りが難しくなる傾向があります。どの程度まで読み取れるかはテストしていないので詳細不明です。

QRコードの読めるウェブカメラ
created by Rinker

アプリは何を使えばいい?

肝心のアプリですがネイティブコードで実行できるネイティブアプリですと速度が出る傾向がありますので、ネイティブアプリとしておすすめなのがZbar。Zbarはlinuxですとzbar-toolsでインストールできます。コマンドは以下です。(debian系)

sudo apt install zbar-tools

これでzbarimgとzbarcamの2つのメインコマンドが使えるようになります。

zbarimgは画像からQRコードを解析して読み取れるツールです。zbarcamは接続したウェブカメラから画像を取り出して読み取れるツールです。

個人的にはzbarcamをおすすめします。zbarcamはv4l2(video for linux 2)によりカメラ設定ができるようで(検証済み)v4l2-ctlで設定します。

接続されているカメラ情報
v4l2-ctl --list-devices

出力
USB Camera: USB Camera (usb-0000:03:00.4-1):
/dev/video0
/dev/video1

こうなりますがvideo10などたくさん表示される場合があります。この場合は(usb-0000:03:00.4-1):的なやつが表示されているデバイスの真下のデバイスが使えるデバイスである可能性が高いです。フォーマット確認コマンドなどを発行して使えるフォーマットがずらーとでてくれば使えるやつでしょう。

カメラの情報出力
v4l2-ctl -d /dev/video0 --all

カメラの使えるフォーマット&解像度
・フォーマットのみ
v4l2-ctl -d /dev/video0 --list-formats
・解像度付き
v4l2-ctl -d /dev/video0 --list-formats-ext

設定
v4l2-ctl -d /dev/video0 -v width=1280,height=720,pixelformat=0
このコマンドはpixelformatに–list-formatsで表示されたindexを指定します。この設定によりフレームレートなどがだいぶ変わります。ただし遅いマシンではzbarcam側で解析の速度が追いつかずフレームレートまででませんので要注意です。

v4l2-ctl -d /dev/video0 -p 30
フレームレートの設定です。

ホワイトバランスやシャープネスなどカメラで対応した設定の確認、設定
設定可能項目の確認
v4l2-ctl -d /dev/video0 -L

項目の状態確認
v4l2-ctl -d /dev/video0 -C (設定項目名)

設定は以下で行います。
v4l2-ctl -d /dev/video0 -c (設定項目名)=値

v4l2-ctl -d /dev/video0 -c brightness=255

zabarcamの起動

設定が終えたらzbarcamを起動して見ましょう。zbarcamはいくつかオプションがありますが、カメラを指定して起動すればデフォルトでテスト用には動きます。

コマンド
zbarcam /dev/video0

これでカメラの映像が出力されつつバーコード、QRコードの読み取りモードで開きます。バーコードなどが読めるかどうかテストしましょう。

本格起動

必要以外のコードを読まない設定にして起動することにより若干早くなるのでないかという推測の元、機能をオフにできる機能があるので使用してみました。体感はあんまり変わらないかな・・。ついでに画面もオフにしました。早くなると見越してのことです。一応設定しておきましょう。なおSSH経由での起動ではnodisplayをつけないとエラーが出ます。

zbarcam --nodisplay -Sdisable -Sqrcode.enable

system error: spawning input thread: Invalid argument (22)

SSH経由で実行した場合にはnodisplayをお忘れなくどうぞ。画面出力ができないためのエラーのようです。

他アプリで連携して処理

このアプリは標準出力に読み取ったデータを吐いてくれるので、連携することが可能です。私はperlが好きなのでperlでのやり方となりますが、他のスクリプト言語でも可能かと思います。

zbarcam --nodisplay -Sdisable -Sqrcode.enable | perl Renkei.pl

パイプで送ることにより連携できます。読み取りはループで読ましておきましょう。なおperlでは標準入力等が自動バッファリングされて直接処理されないのでバッファリングオフを行う必要があります。それが

$|=1;

です。


$|=1;
while (defined(my $line = <STDIN>)){
chomp($line);
#行いたい処理をここに書く。
print "$line¥n";
}

好きにコードを書いていってくださいまし。

QRコードやバーコード読み取りの専用端末も

本記事では未検証となりますが、読み取りの専用端末もあります。アマゾンで検索するといくつかでますのでご検討ください。なお4000円程度からあります

まとめ

いかがでしたでしょうか。QRコードを使えば業務や作業が楽になることもあります。間違いが減ったり効率化したりいいこともたくさんあるでしょう。今回の情報をシステムづくりに活かしていただければ幸いでございます。皆様よいPCライフをお送りくださいませ。でままたお会いしましょう

スイッチングハブの画像
レビュー
ネットワークが遅い原因。トラブルシューティング。速度を10倍改善させた事例

皆様こんにちは。実際にあった事例でネットワークの速度を十倍も改善した事例をご紹介いたします。ネットワークが何故か遅い。そんなことは皆様様の周りでありませんでしたか?ギガハブが当たり前になってきた昨今。ネットワーク速度が10Mくらいしかでてないとしたらそれはもう何かがおかしいとしか言えないかもしれません。 ギガネットワーク(1000BASE)ですと、通信速度は …

PDF編集例
レビュー
PDF変換編集ツール、ソースネクスト、いきなりPDF使用感レビュー

皆様こんにちは。先日知人よりPDFの編集可能なツールはないかと問い合わせがありました。PDFの編集可能なツールとしては、いきなりPDFやワンダーシェアのPDF elementなどがあります。その他アドビの高品質と思われるAcrobat Pro等のツールもありますが、いかんせん高いので格安のものから選択するということで、いきなりPDFを試してみました。 いきな …

ロボットと握手
アプリ
マイクロソフト製無料RPA Power Automate Desktop

皆様こんにちは。今日は今はやりのマイクロソフト製RPA Power Automate Desktopを使用してみました。 RPAとはRobotic Process Automationの略で、機械的な自動化作業を行うツールの総称のようです。簡単にいうとロボットがあなたの代わりに作業を行ってくれるというジャンルになります。 どんなものか試してみましたが、MS …