- Wymagania
- Instalowanie OpenCV w Raspberry Pi
- Instalowanie innych wymaganych pakietów
- Instalacja sprzętowa czytnika kodów QR Raspberry pi
- Kod Pythona dla czytnika kodów QR Raspberry Pi
- Testowanie skanera kodów QR Raspberry Pi
Kod QR (kod szybkiej odpowiedzi) to rodzaj matrycowego kodu kreskowego, który zawiera informacje o przedmiocie, do którego jest dołączony, takie jak dane o lokalizacji, identyfikator lub tracker, który identyfikuje stronę internetową lub aplikację itp. Jest to optyczny odczyt maszynowy etykieta, która ma postać obrazu 2D i ma inny wzór. Aby dowiedzieć się więcej o kodach QR i jak wygenerować kod QR, postępuj zgodnie z naszym poprzednim samouczkiem.
W tym samouczku zamierzamy zbudować skaner kodów QR oparty na Raspberry Pi przy użyciu biblioteki OpenCV i ZBar. ZBar to najlepsza biblioteka do wykrywania i dekodowania różnych typów kodów kreskowych i QR. OpenCV służy do pobierania nowej klatki ze strumienia wideo i przetwarzania jej. Gdy OpenCV przechwyci ramkę, możemy przekazać ją do dedykowanej biblioteki do dekodowania kodów kreskowych Pythona, takiej jak ZBar, która dekoduje kod kreskowy i konwertuje go na odpowiednie informacje.
Wymagania
- Raspberry Pi 3 (dowolna wersja)
- Moduł kamery Pi
Przed przystąpieniem do tego skanera kodów QR Raspberry Pi 3, najpierw musimy zainstalować OpenCV, bibliotekę dekodowania kodów kreskowych ZBar, imutils i kilka innych zależności w tym projekcie. OpenCV jest tutaj używany do cyfrowego przetwarzania obrazu. Najpopularniejsze zastosowania cyfrowego przetwarzania obrazu to wykrywanie obiektów, rozpoznawanie twarzy i licznik osób.
Instalowanie OpenCV w Raspberry Pi
Tutaj biblioteka OpenCV zostanie wykorzystana do skanera QR Raspberry Pi. Aby zainstalować OpenCV, najpierw zaktualizuj Raspberry Pi.
sudo apt-get update
Następnie zainstaluj wymagane zależności do zainstalowania OpenCV na swoim 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
Następnie zainstaluj OpenCV w Raspberry Pi za pomocą poniższego polecenia.
pip3 zainstaluj opencv-contrib-python == 4.1.0.25
Wcześniej używaliśmy OpenCV z Raspberry pi i stworzyliśmy wiele tutoriali na jego temat.
- Instalowanie OpenCV na Raspberry Pi przy użyciu CMake
- Rozpoznawanie twarzy w czasie rzeczywistym za pomocą Raspberry Pi i OpenCV
- Rozpoznawanie tablic rejestracyjnych przy użyciu Raspberry Pi i OpenCV
- Szacowanie wielkości tłumu przy użyciu OpenCV i Raspberry Pi
Stworzyliśmy również serię samouczków OpenCV, zaczynając od poziomu początkującego.
Instalowanie innych wymaganych pakietów
Instalowanie ZBar
Zbar to najlepsza biblioteka do wykrywania i dekodowania różnych typów kodów kreskowych i kodów QR. Użyj poniższego polecenia, aby zainstalować bibliotekę:
pip3 zainstaluj pyzbar
Instalowanie imutils
imutils jest używany do ułatwienia podstawowych funkcji przetwarzania obrazu, takich jak tłumaczenie, obrót, zmiana rozmiaru, tworzenie szkieletów i wyświetlanie obrazów Matplotlib za pomocą OpenCV. Użyj poniższego polecenia, aby zainstalować imutils:
pip3 zainstaluj imutils
Instalowanie argparse
Użyj poniższego polecenia, aby zainstalować bibliotekę argparse. argparse jest odpowiedzialny za analizowanie argumentów wiersza poleceń.
pip3 zainstaluj argparse
Instalacja sprzętowa czytnika kodów QR Raspberry pi
Tutaj potrzebujemy tylko Raspberry Pi i kamery Pi do tego skanera kodów QR za pomocą kamery Raspberry Pi i wystarczy podłączyć złącze taśmy kamery do gniazda kamery podanego w Raspberry pi
Kamera Pi może być używana do tworzenia różnych interesujących projektów, takich jak kamera monitorująca Raspberry Pi, system monitorowania gości, system bezpieczeństwa w domu itp.
Kod Pythona dla czytnika kodów QR Raspberry Pi
Pełny kod czytnika QR Raspberry Pi podany jest na końcu strony. Zanim zaprogramujemy Raspberry Pi, zapoznajmy się z kodem.
Tak więc, jak zwykle, uruchom kod, importując wszystkie wymagane pakiety.
z imutils.video import VideoStream z pyzbar import pyzbar import argparse import datetime import imutils import time import cv2
Następnie skonstruuj parser argumentów i przeanalizuj argumenty. Argument wiersza polecenia zawiera informacje o ścieżce do pliku CSV. Plik CSV (Comma Separated Values) zawiera sygnaturę czasową i ładunek każdego kodu kreskowego z naszego strumienia wideo.
ap = argparse.ArgumentParser () ap.add_argument ("- o", "--output", type = str, default = "barcodes.csv", help = "ścieżka do wyjściowego pliku CSV zawierającego kody kreskowe") args = vars (ap.parse_args ())
Następnie zainicjuj strumień wideo i usuń komentarz z komentowanej linii, jeśli używasz kamery internetowej USB.
#vs = VideoStream (src = 0).start () vs = VideoStream (usePiCamera = True).start () time.sleep (2.0)
Teraz w pętli chwyć klatkę ze strumienia wideo i zmień jej rozmiar na 400 pikseli. Gdy złapie ramkę, wywołaj funkcję pyzbar.decode, aby wykryć i zdekodować kod QR.
frame = vs.read () frame = imutils.resize (frame, width = 400) barcodes = pyzbar.decode (ramka)
Teraz wykonaj pętlę nad wykrytymi kodami kreskowymi, aby wyodrębnić lokalizację kodu kreskowego i narysuj ramkę ograniczającą wokół kodu kreskowego na obrazie.
dla kodu kreskowego w kodach kreskowych: (x, y, w, h) = barcode.rect cv2.rectangle (frame, (x, y), (x + w, y + h), (0, 0, 255), 2)
Następnie zdekoduj wykryty kod kreskowy na ciąg „utf-8” za pomocą funkcji decode („utf-8”), a następnie wyodrębnij typ kodu kreskowego za pomocą funkcji barcode.type.
barcodeData = barcode.data.decode ("utf-8") barcodeType = barcode.type
Następnie zapisz wyodrębnione dane kodu kreskowego i typ kodu kreskowego w zmiennej o nazwie text, a następnie narysuj dane kodu kreskowego i wpisz na obrazie.
text = "{} ({})". format (barcodeData, barcodeType) cv2.putText (ramka, tekst, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0,5, (0, 0, 255), 2)
Teraz wyświetl dane wyjściowe z danymi kodu kreskowego i typem kodu kreskowego.
cv2.imshow ("Czytnik kodów kreskowych", ramka)
Teraz w ostatnim kroku sprawdź, czy klawisz 's' jest wciśnięty, a następnie przerwij główną pętlę i rozpocznij proces czyszczenia.
key = cv2.waitKey (1) & 0xFF # jeśli naciśnięty zostanie klawisz „s”, przerwij pętlę, jeśli key == ord („s”): przerwanie wydruku („czyszczenie…”) csv.close () cv2.destroyAllWindows () kontra stop ()
Testowanie skanera kodów QR Raspberry Pi
Gdy konfiguracja jest gotowa, uruchom program czytnika kodów QR. Zobaczysz okno pokazujące podgląd na żywo z kamery, teraz możesz prezentować kody kreskowe przed kamerą PI. Kiedy pi dekoduje kod kreskowy, narysuje wokół niego czerwone pole z danymi kodu kreskowego i typem kodu kreskowego, jak pokazano na poniższym obrazku:
W ten sposób możesz łatwo zbudować czytnik kodów QR dla Raspberry Pi, używając tylko płytki Raspberry Pi i kamery Pi lub kamery USB.
Działający film i pełny kod tego projektu są podane poniżej.