- Изисквания
- Инсталиране на OpenCV в Raspberry Pi
- Инсталиране на други задължителни пакети
- Raspberry pi QR Code Reader Хардуерна настройка
- Python код за Raspberry Pi QR Code Reader
- Тестване на Raspberry Pi QR Code Scanner
QR кодът (Quick Response code) е вид матричен баркод, който съдържа информация за елемента, към който е прикрепен, като данни за местоположение, идентификатор или тракер, който идентифицира уебсайт или приложение и т.н. Това е машинно четим оптичен етикет, който е под формата на 2D изображение и има различен модел. За да научите повече за QR кодовете и как да генерирате QR код, следвайте предишния ни урок.
В този урок ще изградим базиран на Raspberry Pi скенер за QR кодове, използвайки библиотека OpenCV и ZBar. ZBar е най-добрата библиотека за откриване и декодиране на различните видове баркодове и QR кодове. OpenCV се използва, за да вземете нов кадър от видео поток и да го обработите. След като OpenCV заснеме кадър, ние можем да го предадем на специална библиотека за декодиране на баркод на Python като ZBar, която декодира баркода и го преобразува в съответната информация.
Изисквания
- Raspberry Pi 3 (всяка версия)
- Модул за камера Pi
Преди да пристъпим към този скенер за QR код на Raspberry Pi 3, първо трябва да инсталираме OpenCV, библиотека за декодиране на баркод ZBar, imutils и някои други зависимости в този проект. OpenCV се използва тук за цифрова обработка на изображения. Най-често срещаните приложения на цифровата обработка на изображения са разпознаване на обекти, разпознаване на лица и брояч на хора.
Инсталиране на OpenCV в Raspberry Pi
Тук библиотеката OpenCV ще се използва за QR скенера Raspberry Pi. За да инсталирате OpenCV, първо актуализирайте Raspberry Pi.
sudo apt-get update
След това инсталирайте необходимите зависимости за инсталиране на 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 кодове. Използвайте командата по-долу, за да инсталирате библиотеката:
инсталирай pyzbar
Инсталиране на imutils
imutils се използва за улесняване на основните функции за обработка на изображения като превод, завъртане, преоразмеряване, скелетиране и показване на изображения на Matplotlib с OpenCV. Използвайте командата по-долу, за да инсталирате imutils:
pip3 инсталирайте imutils
Инсталиране на argparse
Използвайте командата по-долу, за да инсталирате библиотеката argparse. argparse е отговорен за анализирането на аргументи от командния ред.
pip3 инсталирайте argparse
Raspberry pi QR Code Reader Хардуерна настройка
Тук ние изискваме само Raspberry Pi и Pi камера за този скенер за QR код с помощта на Raspberry Pi Camera и просто трябва да прикрепите конектора за лента на камерата в слота за камера, даден в Raspberry pi
Камерата Pi може да се използва за изграждане на различни интересни проекти като камера за наблюдение на Raspberry Pi, система за наблюдение на посетителите, система за домашна сигурност и др.
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 (Стойности, разделени със запетая) съдържа клеймото за време и полезния товар на всеки баркод от нашия видео поток.
ap = argparse.ArgumentParser () ap.add_argument ("- o", "--output", type = str, default = "barcodes.csv", help = "път за извеждане на CSV файл, съдържащ баркодове") args = vars (ap.parse_args ())
След това инициализирайте видео потока и коментирайте коментирания ред, ако използвате USB уеб камера.
#vs = VideoStream (src = 0).start () срещу = VideoStream (usePiCamera = True).start () time.sleep (2.0)
Сега вътре в цикъла, вземете кадър от видео потока и го преоразмерете до 400 пиксела. След като грабне рамката, извикайте функцията pyzbar.decode, за да откриете и декодирате QR кода.
frame = vs.read () frame = imutils.resize (frame, width = 400) баркодове = pyzbar.decode (frame)
Сега преминете към откритите баркодове, за да извлечете местоположението на баркода и нарисувайте ограничителното поле около баркода на изображението.
за баркод в баркодове: (x, y, w, h) = баркод.правен cv2.rectangle (рамка, (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 = "{} ({})". format (barcodeData, barcodeType) cv2.putText (frame, text, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2)
Сега покажете изхода с баркод данни и тип баркод.
cv2.imshow ("четец на баркодове", рамка)
Сега в последната стъпка проверете дали клавишът е натиснат, след това извадете основния цикъл и започнете процеса на почистване.
key = cv2.waitKey (1) & 0xFF # ако е натиснат бутон `s`, прекъснете цикъла, ако key == ord (" s "): break print (" почистване… ") csv.close () cv2.destroyAllWindows () срещу stop ()
Тестване на Raspberry Pi QR Code Scanner
След като вашата настройка е готова, стартирайте програмата за четене на QR код. Ще видите прозорец, показващ изглед на живо от вашата камера, сега можете да представите баркодове пред PI камерата. Когато pi декодира баркод, той ще изчертае червено поле около него с данни за баркод и тип баркод, както е показано на изображението по-долу:
По този начин можете лесно да изградите четец на QR кодове на Raspberry Pi Camera само с помощта на платката Raspberry Pi и Pi камера или USB камера.
Работно видео и пълен код за този проект са дадени по-долу.