LoginSignup
17
15

More than 3 years have passed since last update.

Python3で複数のQRコードを読み取る

Last updated at Posted at 2019-07-16

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とは

ZBar bar code reader

すごい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コードをはったやつです。

sample.png

❯❯❯ 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 

17
15
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
17
15