QR-codes maken en scannen

In deze tutorial leg ik uit hoe informatie uit een QR-code ge-extraheerd kan worden en hoe je met de Raspberry Pi je eigen code kunt maken.

Hoe werken QR-codes
Quick-Reference (QR) codes lijken op de bekende streepjescodes, omdat ze gegevens kunnen (de)coderen die weergegeven worden door zwarte en witte vierkanten. Maar in plaats van een laser als scanner te gebruiken zoals bij de barcode, leest een camera met slimme software de ruimtes tussen de vakjes en zet deze om in bruikbare informatie.

De codes bestaan uit verschillende vierkanten die helpen bij het uitlijnen en positioneren van de randen van de QR-code, opmaakkolommen, een versienummer en ten slotte de gegevens zelf.

De gegevens die de codes bevatten, kunnen verschillende type karakters zijn, waaronder cijfers, tekens en binaire gegevens, waardoor ze voor veel creatieve toepassingen kunnen worden gebruikt. Adverteerders coderen er vaak URL’s in die de gebruiker doorverwijzen naar hun website. Andere bedrijven plaatsen mogelijk belangrijke productinformatie in een QR-code, zoals een serienummer, en hechten deze aan een onderdeel van een apparaat.

Code genereren met Python
Er is een Python-pakket genaamd “qrcode” waarmee we snel gegevens in een QR-code kunnen omzetten (coderen) en deze vervolgens als een afbeelding kunnen exporteren. Om het pakket te installeren, geef je het volgende commando:

pip3 install qrcode[pil]

Vervolgens kan je de functionaliteit in een Python3 script importeren en van de ingevoerde tekst een Python Imaging Library (PIL)-afbeelding genereren :

import qrcode
code = qrcode.make('Hallo wereld!')
code.save('hallocode.png')

De drieregelige code hierboven spreekt voor zich. Je kunt de regels in een script verwerken, maar ook rechtstreeks in Python3 invoeren. Hieronder zie je de PIL-afbeelding op basis van de ingevoerde tekst die op geslagen wordt in de map waar je staat.

De QR-code voor ‘Hallo wereld!’

Eigen QR-codes uitprinten
Maak een paar QR-codes met een eigen tekst en print ze uit. Deze afdrukken hebben we straks nodig om ze in te lezen met de camera.


De Raspberry Pi instellen
Voor deze tutorial gebruik ik een Raspberry Pi 3 met de picamera. Aangezien de Pi behoorlijk moet rekenen is het handig om een snel model te gebruiken. Een model 4 zou vanwege de kracht die het heeft beter zijn. Je zult in het filmpje zien wat de belasting van de CPU is als het programma gestart wordt.

Raspberry Pi model 3B met Picam

OpenCV installeren
OpenCV is een bibliotheek met programmeerfuncties die voornamelijk gericht zijn op real-time computervisie. Wil je meer weten over OpenCV, kijk dan hier. Installeer OpenCV door de volgende commando’s in de terminal in te geven.

sudo apt-get update

sudo apt-get install python3-opencv

sudo apt-get install libqt4-test python3-sip python3-pyqt5 libqtgui4 libjasper-dev libatlas-base-dev -y

pip3 install opencv-contrib-python==4.1.0.25

sudo modprobe bcm2835-v4l2

Met het laatste commando kun je de picamera met OpenCV VideoCapture gebruiken.

Je kunt de installatie in Python3 testen met:

>>> import cv2

Als er geen melding is, is de installatie goed gegaan.


QR-codes lezen
De code werkt als volgt:
1. De camera en QR-codedetector worden ingesteld
2. Er wordt een nieuw frame ingelezen en een QR-code wordt geëxtraheerd
3. Als er een code is, wordt er een vak omheen getekend en de gegevens weergegeven
4. De code gaat terug naar stap 2, indien de exit-toets ‘q‘ niet is ingedrukt.

LET OP! Het programma heeft een grafische interface nodig. In de SSH terminal komt het niet tot z’n recht. De gedecodeerde informatie wordt weliswaar getoond, maar het programma zal een melding geven omdat het de X server mist. Start de software daarom in de desktop van de Raspberry Pi, met VNC-viewer kan dit op afstand.

Python-code
Er is een mooie Python3 code beschikbaar om met de picamera de QR-code te detecteren, in te lezen en de informatie te decoderen. Download onderstaande code en sla het in een passende directorie, zoals QRcode op. De map maak je vanuit de root (/home/pi/) aan met:

mkdir QRcode

Start het script op met:

python3 leesQRcode.py

In het filmpje laat ik zien wat het eind resultaat is.

Het programma toont ook het bijgewerkte frame met de overlay-afbeeldingen bij elke update.

Toekomstig gebruik
Omdat QR-codes zo handig en veelzijdig zijn voor het volgen van bijvoorbeeld onderdelen in een magazijn of de registratie van de postpakketten die thuis afgeleverd worden, zie je de toepassing steeds meer groeien. Zoals het zich laat aanzien zal het op den duur de barcode verdringen.

Have A Nice Day!

Geef als eerste een reactie

Laat een reactie achter

Het e-mailadres wordt niet gepubliceerd.


*