12
16

More than 5 years have passed since last update.

OpenCV+ZBarでQRコード読み込み

Posted at

きっかけ

世の中には既にQRコードを読み込めるソフトウェアがたくさんありますが、個人的にOpenCVで顔認識等をしながら、QRコードがあったらそれを読み込むものを作る機会があったので、やってみました。動作環境はMacOS 10.9.5, 言語はC++を使っています。

試行錯誤

顔の検出器を用いて顔認識を行っていたので、QRコードの検出器があればQRコードを切り抜けると考え、こちらの手法を試してみました。
http://cani.hatenablog.com/entry/20090725/1248498850

しかし思った以上に検出誤差が大きく、複数の位置をQRコードとして認識してしまいました。また低解像度のWEBカメラだと厳しいようでした。

そこで用いたのが、ZBarというライブラリです。
http://zbar.sourceforge.net/index.html
GNU LGPL 2.1ライセンスで、商用利用も可能です。
こちらを用いてQRコードの検出、データの抽出まで行いました。

zbarの準備

OpenCVはインストールしている前提で進めます。
まずはZBarのインストールです。macへのインストールは、HomeBrewを用いると楽です。
brew install zbar
でできます。こちらを参考にしました
http://qiita.com/labocho/items/11985fa376b867b8e9ff

これが成功すると、画像でのQR読み込みコマンドが使えるようになります
zbarimg test.jpg
とすると、指定した画像からQRコードを探し、あればその情報を読み取ってくれます。

ZBarにはzbarcamという、webカメラからの画像データからリアルタイムでQRコード読み込みを行うコマンドがあります。しかし上記URLを参考にzbarをインストールすると、このコマンドは使うことができません。インストール時に--disable-videoを指定しているとこのコマンドは使えないようです。ImageMagickをうまくインストールし、解決しようとしましたが、うまくいきませんでした。

しかしながら今回はOpenCVで画像の抽出までは行うので、ここまでの準備は不要です。

コード

コードはこちらのものを使わせて頂きました
https://github.com/ayoungprogrammer/WebcamCodeScanner

こちらをクローンしてきて、ビルドを行います。ビルドするときのコマンドはこんな感じでした。

g++ main.cpp -o main `pkg-config -flags opencv` `pkg-config --libs opencv` `pkg-config --cflags zbar``pkg-config --libs zbar`

コンパイルしてできた実行ファイルを実行すると、うまくいきました。

12
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
16