- Απαιτήσεις
- Εγκατάσταση του OpenCV στο Raspberry Pi
- Εγκατάσταση άλλων απαιτούμενων πακέτων
- Ρύθμιση υλικού Raspberry pi QR Code Reader
- Κωδικός Python για Raspberry Pi QR Code Reader
- Δοκιμή του σαρωτή κώδικα Raspberry Pi QR
Ο κωδικός QR (κωδικός γρήγορης απόκρισης) είναι ένας τύπος γραμμικού κώδικα μήτρας που περιέχει πληροφορίες σχετικά με το στοιχείο στο οποίο επισυνάπτεται, όπως δεδομένα τοποθεσίας, αναγνωριστικό ή ιχνηλάτη που προσδιορίζει ιστότοπο ή εφαρμογή κ.λπ. Είναι οπτικά αναγνώσιμο από μηχανή ετικέτα που έχει τη μορφή εικόνας 2D και έχει διαφορετικό μοτίβο. Για να μάθετε περισσότερα σχετικά με τους κωδικούς QR και πώς να δημιουργήσετε έναν κωδικό QR, ακολουθήστε το προηγούμενο σεμινάριό μας.
Σε αυτό το σεμινάριο, πρόκειται να δημιουργήσουμε ένα QR Code Scanner με βάση το Raspberry Pi χρησιμοποιώντας βιβλιοθήκη OpenCV και ZBar. Το ZBar είναι η καλύτερη βιβλιοθήκη για τον εντοπισμό και την αποκωδικοποίηση των διαφόρων τύπων γραμμωτού κώδικα και κωδικών QR. Το OpenCV χρησιμοποιείται για να τραβήξει ένα νέο καρέ από μια ροή βίντεο και να το επεξεργαστεί. Μόλις το OpenCV καταγράψει ένα πλαίσιο, τότε μπορούμε να το περάσουμε σε μια αποκλειστική βιβλιοθήκη αποκωδικοποίησης γραμμωτού κώδικα Python, όπως ένα ZBar που αποκωδικοποιεί τον γραμμικό κώδικα και το μετατρέπει σε αντίστοιχες πληροφορίες.
Απαιτήσεις
- Raspberry Pi 3 (οποιαδήποτε έκδοση)
- Ενότητα κάμερας Pi
Πριν προχωρήσουμε με αυτόν τον σαρωτή κωδικών Raspberry Pi 3 QR, πρώτα, πρέπει να εγκαταστήσουμε το OpenCV, τη βιβλιοθήκη αποκωδικοποίησης Barcode ZBar, imutils και μερικές άλλες εξαρτήσεις σε αυτό το έργο. Το OpenCV χρησιμοποιείται εδώ για ψηφιακή επεξεργασία εικόνας. Οι πιο συνηθισμένες εφαρμογές της Ψηφιακής Επεξεργασίας Εικόνας είναι η ανίχνευση αντικειμένων, η Αναγνώριση προσώπου και ο μετρητής.
Εγκατάσταση του OpenCV στο Raspberry Pi
Εδώ θα χρησιμοποιηθεί η βιβλιοθήκη OpenCV για το σαρωτή Raspberry Pi QR. Για να εγκαταστήσετε το OpenCV, πρώτα, ενημερώστε το Raspberry Pi.
sudo apt-get ενημέρωση
Στη συνέχεια, εγκαταστήστε τις απαιτούμενες εξαρτήσεις για την εγκατάσταση του OpenCV στο Raspberry Pi σας.
sudo apt-get install libhdf5-dev -y sudo apt-get install libhdf5-serial-dev -y sudo apt-get install libatlas-base-dev -y sudo apt-get install libjasper-dev -y sudo apt-get install libqtgui4 –Y sudo apt-get install libqt4-test –y
Μετά από αυτό, εγκαταστήστε το OpenCV στο Raspberry Pi χρησιμοποιώντας την παρακάτω εντολή.
εγκατάσταση pip3 opencv-contrib-python == 4.1.0.25
Χρησιμοποιήσαμε προηγουμένως το OpenCV με Raspberry pi και δημιουργήσαμε πολλά σεμινάρια για αυτό.
- Εγκατάσταση του OpenCV στο Raspberry Pi χρησιμοποιώντας CMake
- Αναγνώριση προσώπου σε πραγματικό χρόνο με Raspberry Pi και OpenCV
- Αναγνώριση πινακίδας με χρήση Raspberry Pi και OpenCV
- Εκτίμηση μεγέθους πλήθους με χρήση OpenCV και Raspberry Pi
Έχουμε επίσης δημιουργήσει μια σειρά μαθημάτων OpenCV ξεκινώντας από το αρχικό επίπεδο.
Εγκατάσταση άλλων απαιτούμενων πακέτων
Εγκατάσταση του ZBar
Το Zbar είναι η καλύτερη βιβλιοθήκη για τον εντοπισμό και την αποκωδικοποίηση των διαφόρων τύπων γραμμωτού κώδικα και κωδικών QR. Χρησιμοποιήστε την παρακάτω εντολή για να εγκαταστήσετε τη βιβλιοθήκη:
pip3 εγκαταστήστε το pyzbar
Εγκατάσταση imutils
Το imutils χρησιμοποιείται για να κάνει βασικές λειτουργίες επεξεργασίας εικόνας, όπως μετάφραση, περιστροφή, αλλαγή μεγέθους, σκελετοποίηση και προβολή ευκολότερων εικόνων Matplotlib με το OpenCV. Χρησιμοποιήστε την παρακάτω εντολή για να εγκαταστήσετε τα imutils:
pip3 εγκαταστήστε imutils
Εγκατάσταση argparse
Χρησιμοποιήστε την παρακάτω εντολή για να εγκαταστήσετε τη βιβλιοθήκη argparse. Το argparse είναι υπεύθυνο για την ανάλυση ορισμάτων γραμμής εντολών.
pip3 εγκατάσταση argparse
Ρύθμιση υλικού Raspberry pi QR Code Reader
Εδώ απαιτούμε μόνο κάμερα Raspberry Pi και Pi για αυτόν τον σαρωτή κωδικού QR χρησιμοποιώντας την κάμερα Raspberry Pi και απλώς πρέπει να συνδέσετε το βύσμα της κορδέλας της κάμερας στην υποδοχή κάμερας που παρέχεται στο Raspberry pi
Η κάμερα Pi μπορεί να χρησιμοποιηθεί για τη δημιουργία διαφόρων ενδιαφέρων έργων, όπως Raspberry Pi Surveillance Camera, Visitor Monitor System, Home Security System κ.λπ.
Κωδικός Python για Raspberry Pi QR Code Reader
Ο πλήρης κωδικός για το πρόγραμμα ανάγνωσης Raspberry Pi QR δίνεται στο τέλος της σελίδας. Πριν προγραμματίσουμε το Raspberry Pi, ας καταλάβουμε τον κωδικό.
Έτσι, όπως συνήθως, ξεκινήστε τον κωδικό εισάγοντας όλα τα απαιτούμενα πακέτα.
από imutils.video import VideoStream από pyzbar import pyzbar import argparse import datetime import imutils import time import cv2
Στη συνέχεια, κατασκευάστε το πρόγραμμα ανάλυσης ορίσματος και αναλύστε τα επιχειρήματα. Το όρισμα γραμμής εντολών περιέχει πληροφορίες σχετικά με τη διαδρομή του αρχείου CSV. Το αρχείο CSV (Comma Separated Values) περιέχει τη χρονική σήμανση και το ωφέλιμο φορτίο κάθε γραμμικού κώδικα από τη ροή βίντεο.
ap = argparse.ArgumentParser () ap.add_argument ("- o", "--output", type = str, default = "barcodes.csv", help = "διαδρομή προς έξοδο αρχείου CSV που περιέχει γραμμικούς κώδικες") args = vars (ap.parse_args ())
Μετά από αυτό, αρχικοποιήστε τη ροή βίντεο και αποσυνδέστε τη γραμμή σχολίων εάν χρησιμοποιείτε κάμερα web USB.
#vs = VideoStream (src = 0).start () vs = VideoStream (usePiCamera = True). έναρξη () time.sleep (2.0)
Τώρα μέσα στο βρόχο, πιάστε ένα πλαίσιο από τη ροή βίντεο και αλλάξτε το μέγεθός του σε 400 pixel. Μόλις αρπάξει το πλαίσιο, καλέστε τη συνάρτηση pyzbar.decode για να εντοπίσετε και να αποκωδικοποιήσετε τον κωδικό QR.
frame = vs.read () frame = imutils.resize (frame, width = 400) barcodes = pyzbar.decode (πλαίσιο)
Τώρα, περιστρέψτε τους ανιχνευμένους γραμμωτούς κώδικες για να εξαγάγετε τη θέση του γραμμικού κώδικα και να σχεδιάσετε το πλαίσιο οριοθέτησης γύρω από το γραμμικό κώδικα στην εικόνα.
για γραμμωτό κώδικα σε γραμμικούς κώδικες: (x, y, w, h) = barcode.rect cv2. ορθογώνιο (πλαίσιο, (x, y), (x + w, y + h), (0, 0, 255), 2)
Στη συνέχεια, αποκωδικοποιήστε τον ανιχνευμένο γραμμικό κώδικα σε μια συμβολοσειρά "utf-8" χρησιμοποιώντας τη συνάρτηση αποκωδικοποίησης ("utf-8") και στη συνέχεια εξαγάγετε τον τύπο του γραμμικού κώδικα χρησιμοποιώντας τη συνάρτηση barcode.type.
barcodeData = barcode.data.decode ("utf-8") barcodeType = barcode.type
Μετά από αυτό, αποθηκεύστε τα εξαγόμενα δεδομένα γραμμωτού κώδικα και τον τύπο γραμμωτού κώδικα μέσα σε μια μεταβλητή που ονομάζεται κείμενο και σχεδιάστε τα δεδομένα γραμμικού κώδικα και πληκτρολογήστε την εικόνα.
text = "{} ({})". μορφή (barcodeData, barcodeType) cv2.putText (πλαίσιο, κείμενο, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0,5, (0, 0, 255), 2)
Τώρα εμφανίστε την έξοδο με τα δεδομένα γραμμικού κώδικα και τον τύπο γραμμικού κώδικα.
cv2.imshow ("Αναγνώστης γραμμωτού κώδικα", πλαίσιο)
Τώρα στο τελευταίο βήμα, ελέγξτε εάν το πλήκτρο είναι πατημένο και, στη συνέχεια, σπάστε τον κύριο βρόχο και ξεκινήστε τη διαδικασία καθαρισμού.
key = cv2.waitKey (1) & 0xFF # εάν πατηθεί το πλήκτρο `s`, σπάστε από το βρόχο εάν το πλήκτρο == ord (" s "): break print (" clean up… ") csv.close () cv2.destroyAllWindows () vs.stop ()
Δοκιμή του σαρωτή κώδικα Raspberry Pi QR
Μόλις η ρύθμιση είναι έτοιμη, ξεκινήστε το πρόγραμμα ανάγνωσης κώδικα QR. Θα δείτε ένα παράθυρο που δείχνει μια ζωντανή προβολή από την κάμερά σας, τώρα μπορείτε να παρουσιάσετε γραμμικούς κωδικούς μπροστά από την κάμερα PI. Όταν το pi αποκωδικοποιεί έναν γραμμικό κώδικα, θα σχεδιάσει ένα κόκκινο κουτί γύρω του με δεδομένα γραμμωτού κώδικα και τύπο γραμμικού κώδικα όπως φαίνεται στην παρακάτω εικόνα:
Έτσι μπορείτε να δημιουργήσετε εύκολα ένα Raspberry Pi Camera QR Code Reader με τη χρήση της πλακέτας Raspberry Pi και της κάμερας Pi ή της κάμερας USB.
Παρακάτω δίνεται ένα βίντεο εργασίας και πλήρης κωδικός για αυτό το έργο.