- Вимоги
- Встановлення OpenCV в Raspberry Pi
- Встановлення інших необхідних пакетів
- Raspberry pi QR Code Reader Налаштування обладнання
- Код Python для зчитувача QR-кодів Raspberry Pi
- Тестування сканера QR-коду Raspberry Pi
QR-код (код швидкого реагування) - це тип матричного штрих-коду, що містить інформацію про елемент, до якого він прикріплений, наприклад дані про місцезнаходження, ідентифікатор або трекер, який ідентифікує веб-сайт або додаток тощо. Це машиночитаний оптичний ярлик, який має форму 2D-зображення та має інший малюнок. Щоб дізнатися більше про QR-коди та як створити QR-код, дотримуйтесь нашого попереднього підручника.
У цьому посібнику ми збираємося створити сканер QR-коду на основі Raspberry Pi за допомогою бібліотеки 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-кодів. Використовуйте команду нижче, щоб встановити бібліотеку:
pip3 встановити
Встановлення імутилів
imutils використовується для спрощення основних функцій обробки зображень, таких як переклад, обертання, зміна розміру, скелетування та відображення зображень Matplotlib за допомогою OpenCV. Використовуйте команду нижче, щоб встановити імутіли:
pip3 встановити imutils - -
Встановлення argparse
Використовуйте команду нижче, щоб встановити бібліотеку argparse. argparse відповідає за аналіз аргументів командного рядка.
pip3 встановити argparse
Raspberry pi QR Code Reader Налаштування обладнання
Тут нам потрібні лише камери Raspberry Pi та Pi для цього сканера QR-коду за допомогою камери Raspberry Pi, і вам просто потрібно приєднати роз’єм стрічки камери в гніздо камери, вказане в Raspberry pi
Камеру Pi можна використовувати для побудови різних цікавих проектів, таких як камера спостереження Raspberry Pi, система моніторингу відвідувачів, система домашньої безпеки тощо.
Код Python для зчитувача QR-кодів Raspberry Pi
Повний код QR-зчитувача Raspberry Pi наведено в кінці сторінки. Перш ніж програмувати Raspberry Pi, давайте розберемося з кодом.
Отже, як зазвичай, почніть код, імпортуючи всі необхідні пакети.
from imutils.video import VideoStream from 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, за замовчуванням = "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", використовуючи функцію decode ("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 ("Зчитувач штрих-кодів", кадр)
Тепер на останньому кроці перевірте, чи натиснута клавіша 's', а потім розірвіть основний цикл і починайте процес очищення.
key = cv2.waitKey (1) & 0xFF # якщо натиснута клавіша `s`, вирватися з циклу, якщо key == ord (" s "): break print (" очищення… ") csv.close () cv2.destroyAllWindows () проти зупинки ()
Тестування сканера QR-коду Raspberry Pi
Коли налаштування буде готове, запустіть програму зчитування QR-коду. Ви побачите вікно, що відображає вигляд у реальному часі з вашої камери, тепер ви можете представити штрих-коди перед камерою PI. Коли pi декодує штрих-код, він намалює навколо нього червоне поле з даними штрих-коду та типом штрих-коду, як показано на малюнку нижче:
Ось як ви можете легко створити програму зчитування QR-коду Raspberry Pi Camera, просто використовуючи плату Raspberry Pi та камеру Pi або USB-камеру.
Робоче відео та повний код цього проекту подано нижче.