TL;DR;
Python3でpyzbarを使って1イメージ内にある複数のQRコードを読み込みます。
備忘録です。
実行環境
- macOS Mojave 10.14.5
- Python 3.7.3
- zbar 0.10.9
- pyzbar 0.1.8
pyzbar とは
Read one-dimensional barcodes and QR codes from Python 2 and 3 using the zbar library.
-- zbarライブラリを使用してPython 2と3から一次元バーコードとQRコードを 読みます。
pyzbar - PyPI
ZBarとは
すごいOSSみたい
zbar で画像からバーコードを読み取る
インストール
pyzbarのオフィシャルにあるとおりにインストール
brew install zbar
pip install pyzbar
画像を読むpillowもインストール
pip install Pillow
pillowはPILのforkらしい
Pillow 6.0.1 Documentation
PIL(Python Imaging Library) が Pillow に変わっていた
実行メモ
イメージを適当につくって読み込ませます。
実行したコードはオフィシャルに書いてあるもの。
イメージはPagesのテンプレートに適当にQRコードをはったやつです。
❯❯❯ python
Python 3.7.3 (default, Apr 14 2019, 02:06:28)
[Clang 10.0.1 (clang-1001.0.46.3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from pyzbar.pyzbar import decode
>>> from PIL import Image
>>> from pandas import DataFrame
>>> data = DataFrame(decode(Image.open('sample.png')))
>>> data
data | type | rect | polygon | |
---|---|---|---|---|
1 | b'http://www.apple.com/jp/' | QRCODE | (座標) | (座標) |
2 | b'https://googl.com' | QRCODE | (略) | (略) |
3 | b'https://www.amazon.co.jp' | QRCODE | (略) | (略) |
値を見やすいようにpandasのDataFrameに入れています。
間違えてつくったQRコードのURLもきちんと読めていますね。
複数OK、座標まちまちOKであることを確認できました。
参考
QRコードの商標を持っているデンソーウェーブのサイト
QRコードドットコム FAQ