Эта статья — первая в цикле статей, в котором мы разберемся с тем, как qr-код устроен, и напишем простенький Qr-детектор и дешифровщик, а также свой собственный генератор qr-кодов.
Использовать мы будем python вместе с opencv и numpy. Учитывая, что opencv — кросс-язычная библиотека, а также то, что работа с изображением/текстурой в разных решениях выглядят примерно одинаково, то я думаю, что вы без труда сможете перевести алгоритм, который будет здесь написан, на любой нужный вам язык
В первую очередь мы будем рассматривать полноразмерный qr-код, Micro-qr возможно будет рассмотрен после завершения работы над полноразмерным qr
Также, хочу отметить, что готовый класс QrCodeDetector уже имеется внутри opencv. Возможно, вам не нужно изобретать велосипед 🙂
Обнаружение
Очевидно, что прежде, чем дешифровать qr-код, нужно для начала его обнаружить на картинке. Как же это делают наши смартфоны? Всё очень просто, специально для этого на Qr-коде есть вот эти три квадратика:
Как считать qr код на компьютере, 2 метода
Пишем код
Как уже было сказано выше, использовать мы будем opencv и numpy. Импортируем эти библиотеки:
import cv2 as cv import numpy as np
В первую очередь нам нужно найти первый чёрный пиксель на изображении, которое является трёхмерным массивом вида:
img[y, x, 1]
Поэтому мы проходимся по массиву, пока не найдем элемент, значение которого меньше 50. (черный цвет = 0, но на изображении могут быть помехи, так что мы просто ищем тёмные пиксели):
class QrHandler(): def detect(self, img): for y in range(0, len(img)): for x in range(0, len(img[0])): if (img[y, x] < [50, 50, 50]).all(): print(‘black’)
Кстати, ради дебага я использую режим чтения cv.IMREAD_COLOR, по существу он здесь совершенно не нужен, так что я советую заменить его на cv.IMREAD_GRAYSCALE
QR Code https://apps.apple.com/ru/app/qr-code-%D1%81%D0%BA%D0%B0%D0%BD%D0%B5%D1%80-%D1%88%D1%82%D1%80%D0%B8%D1%85-%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2/id1375818756″ target=»_blank»]apps.apple.com[/mask_link]
Как отсканировать, считать, расшифровать QR-код?
Если вы хотите работать с QR-кодами на компьютере, вы можете воспользоваться программой BarCapture компании jaxo systems:
BeeTagg — поддерживаемые телефоны: Apple, Blackberry, HTC, LG, Mio, Motorola, Nokia, Palm, Samsung, Siemens, Sony Ericsson, SPV:
Для телефонов Nokia:
Google’s zxing для Андроид:
NeoReader поддерживает работу со многими популярными платформами включая Apple, Blackberry, Motorola, Nokia, Samsung и Sony Ericsson:
i-nigma работает более чем с 450 различными моделями:
UpCode работает более чем с 700 различными моделями:
автор вопроса выбрал этот ответ лучшим
комментировать
в избранное ссылка отблагодарить
Ксарф акс [156K]
5 лет назад
[Python] Работа с QR | Как считать и сгенерировать QR код?
QR-код
Этот термин расшифровывается как «Quick Response» — быстрый отклик. QR-код представляет собой изображение, содержащее какую-либо закодированную информацию.
При этом QR-код всегда имеет форму квадрата
Работа с QR-кодами
Для того, чтобы считывать и распознавать QR-коды, вы должны установить на ваш смартфон специальную программу.
QR Droid Code Scanner.
Скачать эти программы можно на Google Play или на App Store.
После установки программы дальнейшие действия такие:
1) Запускаем программу на смартфоне.
2) Далее нужно навести камеру на QR-код, который необходимо считать.
3) В случае успешного захвата изображения будет произведена дешифровка кода.
4) После расшифровки QR-кода будет выведена на экран определённая информация или выполнено какое-либо действие — всё зависит от предназначения обрабатываемого кода.
комментировать
в избранное ссылка отблагодарить
Nikol ai Sosiu ra [152K]
9 лет назад
Для того, чтобы отсканировать, считать, расшифровать QR-код, надо иметь современный мобильный телефон, у которого есть рабочая фотокамера.
Скачиваем на телефон и устанавливаем программу QR reader.
Этой программой потом будем расшифровывать двоичные коды.
Главное, программу для расшифровки QR-кодов надо подобрать под свое мобильное устройство.
После установки можно приступить к чтению QR-кода:
- запускаем программу QR reader;
- ждем некоторое время для активации программой камеры мобильного устройства;
- наводим камеру на считываемый код, выдержав расстояние 15см от него;
- настраиваем четкость изображения;
- ждем пока ридер прочтет и выдаст информацию;
- если не получилось, повторяем попытку, изменив немного расстояние от камеры до изображения с кодом.
комментировать
в избранное ссылка отблагодарить
ni-nochk a [20.6K]
6 лет назад
Как считать QR-код на телефон или другими словами как отсканировать QR-код на телефон поможет инструкция:
- нам понадобится телефон с камерой, доступом в интернет.
- устанавливаем специальные программы (на выбор): Barcode Scanner, скачать можно здесь.
- запускаем программу.
- берем товар с нанесенным QR-кодом
- наводим камеру на QR-код
- ждем 3 секунды
- камера автоматически сканирует код, а приложение выведет на экран всю подробную информацию, то есть расшифрует QR-код. Если код содержит ссылку на сайт, то браузер ее придлодит открыть автоматически. Популярность, обусловленная удобством растет, сейчас можно встретить даже предложения по созданию личного QR-кода и нанесение его на одежду.
комментировать
в избранное ссылка отблагодарить
8 лет назад
На моем смартфоне этого сделать не удастся, так как камеру уж больно плохая нечеткая.
А для этого есть очень много программ в Play Market да и в интернете уйма, но я бы посоветовал скачать перед этим антивирусник, ведь и на андроид есть множество вирусов, даже если качать Play Market.
Вот названия что бы не мучиться не искать:
QR Droid (Русский)
Штрих QR-код сканер.
QR Code Reader.
комментировать
в избранное ссылка отблагодарить
Azama tik [55.3K]
6 лет назад
Для того, чтобы можно было расшифровать/считать QR-код, нужна специальная программа. Для владельцев смартфонов на базе Android есть такие популярные программы для считывания qr — кодов, как «QR Droid» и «ZXing Team».
Есть также очень хорошее приложение — QR Reader.
Для того, чтобы считать код, нужно скачать одну из этих программ, затем запустить ее > далее нужно разрешить приложению доступ к камере. После этого нам остается лишь навести камеру на код, который нужно считать и выдержать некоторое время (оно различно у разных программ).
Источник: www.bolshoyvopros.ru