Verwenden Sie ZBar und das Python-Modul https://pypi.python.org/pypi/zbar/. Es werden auch andere Barcodes als QR-Codes unterstützt.
Um die Aggregation der experimentellen Ergebnisse mithilfe von Papierkarten zu optimieren, habe ich notiert, dass ich im Voraus einen QR-Code in der Karte vorbereitet und ihn nach dem Scannen automatisch mit Python verarbeitet habe.
ZBar
One-Shot-Installation mit Homebrew.
$ brew install zbar
Ich möchte dies mit PyPI auf einmal installieren, aber wenn ich es so einsetze, wie es ist, stirbt Python aufgrund eines Segmentierungsfehlers zum Zeitpunkt des Imports.
$ pip install zbar
$ python
Python 2.7.9 (default, Jan 7 2015, 11:50:42)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.56)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import zbar
Segmentation fault: 11
$ pip uninstall zbar
Wenden Sie daher Patch auf den Quellcode an und installieren Sie ihn. In diesem Patch fügen wir dem Array Sentinel hinzu, um das Auftreten eines Segmantation-Fehlers zu verhindern.
$ wget https://pypi.python.org/packages/source/z/zbar/zbar-0.10.tar.bz2
$ wget https://github.com/npinchot/zbar/commit/d3c1611ad2411fbdc3e79eb96ca704a63d30ae69.diff
$ tar jxvf zbar-0.10.tar.bz2
$ cd zbar-0.10
$ patch -p1 < ../d3c1611ad2411fbdc3e79eb96ca704a63d30ae69.diff
patching file imagescanner.c
$ python setup.py install
$ python
Python 2.7.9 (default, Jan 7 2015, 11:50:42)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.56)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import zlib
>>>
Diesmal war es okay.
Geben Sie mit einem PyPI ein.
$ pip install Pillow
Python-Testcode.
zbar_test.py
zbar_test.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
### cf. http://99blues.dyndns.org/blog/2010/12/zbar/
import sys
import zbar
import PIL.Image
if len(sys.argv) < 2: exit(1)
# create a reader
scanner = zbar.ImageScanner()
# configure the reader
scanner.parse_config('enable')
# obtain image data
pil = PIL.Image.open(sys.argv[1]).convert('L')
(width, height) = pil.size
raw = pil.tostring()
# wrap image data
image = zbar.Image(width, height, 'Y800', raw)
# scan the image for barcodes
scanner.scan(image)
# extract results
for symbol in image:
# do something useful with results
print 'decoded', symbol.type, 'symbol', '"%s"' % symbol.data
# clean up
del(image)
$ ./zbar_test.py /path/to/image.jpg
decoded QRCODE symbol "http://www.example.com/"
Recommended Posts