Ein QR-Code, der im Alltag, insbesondere für elektronische Zahlungen, alltäglich geworden ist. Ich möchte es selbst machen und es erkennen lassen Ich werde das Ergebnis des Versuchs mit Raspberry Pi veröffentlichen.
・ Beliebige QR-Code-Generierung ・ Code lesen + Inhalt mit USB-Kamera anzeigen Es sieht so aus, wenn es ausgeführt wird. (https://www.youtube.com/watch?v=xLL4vZN3S7g) Zeigen Sie den Inhalt des Codes an (der von Ihnen selbst generiert werden kann). Um zu verstehen, wie Sie erkennen, erhöht sich der numerische Wert für jede Erkennung.
Umgebung ・ RasPi4 (sollte mit RasPi3 funktionieren) ・ USB-Kamera (Logitech) → Raspi-Kamera ist ebenfalls erhältlich.
-Nicht erforderlich, wenn die RasPi- oder OpenCV-Einrichtung abgeschlossen ist. Probieren Sie ArUco mit Raspberry Pi aus
・ Installation der erforderlichen Pakete Gehen Sie im Terminal wie folgt vor
pip install --upgrade pip
pip install pillow
pip install pyzbar
pip install qrcode
QRcreate.py
import qrcode
from PIL import Image
#Bestimmen Sie die Größe
qr = qrcode.QRCode(box_size=5)
#Liste der Typen und Größen.
#1 57x57
#2 114x114
#5 285x285
#10 570x570
#Geben Sie den einzubettenden Inhalt an
qr.add_data('Probieren Sie den QR-Code in Ihrer Nähe aus')
qr.make()
img_qr = qr.make_image()
img_qr.save('/home/pi/qr_lena_1.png') #Der Ort und Name, den Sie speichern möchten.
QRdetect.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from pyzbar.pyzbar import decode
from PIL import Image
import cv2
import time #Für den Test nicht erforderlich
#Starten Sie die Videoaufnahme
cap = cv2.VideoCapture(1)
i=0 #Zum Test
while True:
#Holen Sie sich Bilder von der Videoaufnahme
ret, frame = cap.read()
#Holen Sie sich Größe
Height, Width = frame.shape[:2]
img = cv2.resize(frame,(int(Width),int(Height)))
PIL_Image=Image.fromarray(img)
#Bildschirm
cv2.imshow('Qr Test', img)
data = decode(PIL_Image)
#Zeigen Sie an, ob Sie etwas lesen können
if(data != []):
print('Read' ,i)
i=i+1
#print(data[0][0])
print(data[0][0].decode('utf-8', 'ignore'))
#Empfang von Tastatureingaben
cv2.waitKey(1)
#Freier Speicher für die Videoaufnahme
cap.release()
#Schließen Sie alle Fenster
cv2.destroyAllWindows()
Es ist etwas schwer zu erkennen, aber Sie können sehen, dass die Anzahl mit jeder Erkennung zunimmt. Wenn Sie nicht drucken, wird es schneller ausgeführt. (https://www.youtube.com/watch?v=xLL4vZN3S7g)
Dies ist eine sehr hilfreiche Seite. Detaillierte Erklärung (https://note.com/yurufuwa_dev/n/n3442772e67ad) Verschiedene Generierungsmethoden (https://qiita.com/MuAuan/items/7265da5281aa69623a03)
das ist alles.
Recommended Posts