QR-коды (Quick-reference code) аналогичны штрих-кодам, поскольку они способны кодировать данные, представленные черными и белыми квадратами. Но вместо того, чтобы использовать лазер, камера различает пробелы и затем отправляет эту информацию для обработки. QR-коды состоят из нескольких больших квадратов, которые помогают выровнять и позиционировать края QR-кода, отформатировать столбцы, номер версии и, наконец, сами данные.

Содержащиеся в них данные могут содержать различные типы информации, включая числа, символы и двоичные файлы, что позволяет использовать их в различных целях. Рекламодатели часто кодируют в них URL-адреса, которые перенаправляют пользователя на их веб-сайт. Другие компании могут разместить важную информацию о продукте в QR-коде, например, серийный номер, и прикрепить ее к компоненту. В этом проекте мы создадим простой сканер QR-кода с использованием Raspberry Pi и камеры.

Существует пакет на Python под названием «qrcode», который позволяет пользователям быстро кодировать данные внутри QR-кода, а затем экспортировать их в виде изображения. Чтобы установить его, запустите
pip3 install qrcode[pil]Затем вы можете импортировать его в скрипт и сгенерировать изображение PIL с помощью команды:
import qrcode
code = qrcode.make('Hello world!')
Затем изображение можно экспортировать в файл с помощью команды:
code.save(имя_файла.png)

Вы можете дополнительно настроить свои коды с помощью класса QRCode, который предоставляет такие параметры, как размер, величина исправления ошибок, версия и ширина границы.
Теперь, когда все ваши собственные QR-коды созданы, скомпилируйте их на одной странице и распечатайте.

В данном проекте мы используем миникомпьютер Raspberry Pi 4 из-за его мощности, которая может дать приложению небольшой прирост скорости при чтении изображений.

В нашем случае установлен Raspbian,. К Raspberry Pi можно подключиться через SSH и установить OpenCV.
sudo apt-get update
sudo apt-get install python3-opencv
sudo apt-get install libqt4-test python3-sip python3-pyqt5 libqtgui4 libjasper-dev libatlas-base-dev -y
pip3 install opencv-contrib-python==4.1.0.25
sudo modprobe bcm2835-v4l2
Последняя команда позволяет вам использовать Picamera с OpenCV VideoCapture.

Если установка прошла успешно:
python3
import cv2
Код работает следующим образом. Сначала настраивается камера и детектор QR-кода. Затем читается в новом кадре и извлекается QR-код. Если есть код, рисуется рамкв вокруг него и отображвются его данные выше. Если клавиша выхода «q» не была нажата, возврат ко второму шагу. Программа также показывает обновленный кадр с наложенной графикой при каждом обновлении.
import cv2
cap = cv2.VideoCapture(0)
detector = cv2.QRCodeDetector()
while True:
_, img = cap.read()
data, bbox, _ = detector.detectAndDecode(img)
if(bbox is not None):
for i in range(len(bbox)):
cv2.line(img, tuple(bbox[i][0]), tuple(bbox[(i+1) % len(bbox)][0]), color=(255,
0, 255), thickness=2)
cv2.putText(img, data, (int(bbox[0][0][0]), int(bbox[0][0][1]) - 10), cv2.FONT_HERSHEY_SIMPLEX,
0.5, (0, 255, 0), 2)
if data:
print("data found: ", data)
cv2.imshow("code detector", img)
if(cv2.waitKey(1) == ord("q")):
break
cap.release()
cv2.destroyAllWindows()
© digitrode.ru