- Требования
- Установка OpenCV в Raspberry Pi
- Установка других необходимых пакетов
- Настройка оборудования для чтения QR-кода Raspberry Pi
- Код Python для Raspberry Pi QR Code Reader
- Тестирование сканера 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 установить pyzbar
Установка imutils
imutils используется для упрощения основных функций обработки изображений, таких как перевод, поворот, изменение размера, скелетизация и отображение изображений Matplotlib с помощью OpenCV. Используйте команду ниже для установки imutils:
pip3 установить imutils
Установка argparse
Используйте команду ниже, чтобы установить библиотеку argparse. argparse отвечает за анализ аргументов командной строки.
pip3 установить argparse
Настройка оборудования для чтения QR-кода Raspberry Pi
Здесь нам требуется только камера Raspberry Pi и Pi для этого сканера QR-кода, использующего камеру Raspberry Pi, и вам просто нужно прикрепить ленточный разъем камеры в слот камеры, указанный в Raspberry pi.
Камеру Pi можно использовать для создания различных интересных проектов, таких как камера наблюдения Raspberry Pi, система мониторинга посетителей, система домашней безопасности и т. Д.
Код Python для Raspberry Pi QR Code Reader
Полный код 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, default = "barcodes.csv", help = "путь к выходному файлу CSV, содержащему штрих-коды") args = vars (ap.parse_args ())
После этого инициализируйте видеопоток и раскомментируйте закомментированную строку, если вы используете веб-камеру USB.
#vs = VideoStream (src = 0).start () vs = VideoStream (usePiCamera = True).start () time.sleep (2.0)
Теперь внутри цикла возьмите кадр из видеопотока и измените его размер до 400 пикселей. Как только он захватит кадр, вызовите функцию pyzbar.decode для обнаружения и декодирования QR-кода.
frame = vs.read () frame = imutils.resize (frame, width = 400) barcodes = pyzbar.decode (frame)
Теперь переберите обнаруженные штрих-коды, чтобы извлечь местоположение штрих-кода и нарисуйте ограничивающую рамку вокруг штрих-кода на изображении.
для штрих-кода в штрих-кодах: (x, y, w, h) = barcode.rect cv2.rectangle (frame, (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, а затем нарисуйте данные штрих-кода и введите их на изображение.
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 (" clean up… ") csv.close () cv2.destroyAllWindows () vs.stop ()
Тестирование сканера QR-кода Raspberry Pi
Когда ваша установка будет готова, запустите программу чтения QR-кода. Вы увидите окно с изображением в реальном времени с вашей камеры, теперь вы можете отображать штрих-коды перед камерой PI. Когда pi декодирует штрих-код, он нарисует вокруг него красную рамку с данными штрих-кода и типом штрих-кода, как показано на изображении ниже:
Вот как вы можете легко создать считыватель QR-кода камеры Raspberry Pi, просто используя плату Raspberry Pi и камеру Pi или USB-камеру.
Ниже приведены рабочее видео и полный код этого проекта.