Как генерировать qr коды python
Как сгенерировать элегантный QR-код с помощью Python
QR-код как инструмент передачи информации играет важную роль в современном обществе. От пользователей мобильных телефонов, входящих в систему, до мобильных платежей, существование QR-кодов можно увидеть в любом уголке жизни, так как же мы сами сгенерируем QR-код? Если вы используете Python, мы можем быстро сгенерировать QR-код, и мы можем сами определить информацию, содержащуюся в QR-коде. Информация может быть в виде текста, изображений или веб-сайтов. Давайте посмотрим, как сгенерировать QR-код.
1. Используйте MyQR для создания QR-кода.
Есть много способов сгенерировать QR-код. Давайте сначала посмотрим, как сгенерировать QR-код с помощью модуля MyQR.
(1) Установка модуля
Нам необходимо установить этот модуль, прежде чем начать его использовать. Используйте pip для загрузки прямо здесь, вот внутренний источник:
После завершения установки мы можем начать использовать его. Сначала сгенерируйте простейший QR-код:
После того, как мы запустим эту программу, файл py будет генерировать изображения в том же каталоге. qrcode.jpg , Изображение - это изображение с QR-кодом, и текстовая информация, которую мы установили выше, отсканирована.
(2) Создайте QR-код изображения
QR-коды в нашей повседневной жизни относительно однообразны. Есть чистые QR-коды, и весь QR-код состоит только из черных и белых квадратов; есть также QR-коды с изображениями, обычно помещающие изображение в центр QR-кода, и нам нужно сделать это сейчас. Все это QR-код с картинкой. То есть использовать картинку в качестве фона. Такой QR-код также очень просто реализовать:
Эффект от создания QR-кода выглядит следующим образом:
Как видите, информация, содержащаяся в нашем QR-коде, представляет собой URL-адрес. В это время при сканировании QR-кода выполняется прямой переход на веб-страницу. С тем же кодом нам нужно только установить параметр изображения для анимированного изображения и изменить суффикс выходного файла на gif:
2. Используйте qrcode для создания QR-кода.
qrcode также является удобным инструментом, с помощью этого модуля мы также можем быстро сгенерировать QR-код.
(1) Установка модуля
Здесь также используется установка pip, мы выполняем следующий оператор в окне командной строки:
После завершения установки мы можем начать генерировать наш первый QR-код:
После того, как мы вызовем метод сохранения, он будет сгенерирован в рамках проекта. qrcode.jpg Изображение, это изображение является нашим изображением QR-кода, и мы сканируем его, чтобы перейти непосредственно на веб-страницу.
(2) Более точное создание QR-кодов
В дополнение к указанным выше методам мы также можем использовать класс QRCode для генерации QR-кода. Таким образом, мы можем контролировать дополнительную информацию о QR-коде:
Таким образом мы также можем сгенерировать QR-код, конечно, мы также можем его обогатить:
среди них version Содержит информацию о размере, если установлено значение 1, создается QR-код размером 12x12, единица измерения box_size Пикселей.
мы можем добавить version Установить как None И добавить предложение qr.make(fit=True) , Чтобы программа автоматически сгенерировала QR-код нужного размера.
Дополнительно error_correction Чтобы установить уровень исправления ошибок, каков уровень исправления ошибок - это знание самого QR-кода.
Выше приведены несколько встроенных констант, из которых мы можем выбирать.
(3) Считайте данные в QR-коде
Мы говорили о том, как сгенерировать QR-код выше, но мы не можем прочитать информацию в QR-коде, поэтому мы должны использовать наше оборудование. В Python мы можем использовать модуль pyzbar для идентификации QR-кода. Конечно, есть и другие методы. Здесь мы используем pyzbar, чтобы увидеть, как распознать QR-код. Во-первых, нам нужно установить модуль:
Как-то раз я задумался: было бы забавно создать программу при помощи wxPython, которая генерирует QR коды и затем отображает их на экране. Поскольку, как понятно, я хотел написать её на Python, то после недолгих поисков я обнаружил трёх кандидатов на это дело:
Я воспользовался python-qrcode и pyqrnative, так как они прекрасно работают как на Windows, так и на Mac и Linux. Кроме того, они не требуют ничего больше, только Python Imaging Library. Проект pyqrcode требует дополнительных модулей и не работает на Windows, так что я даже не стал с ним заморачиваться. В итоге я взял старый код моего Photo Viewer и немного его переиначил, чтобы получить генератор QR кодов. Если интересно - давайте поподробнее!
Приступаем
Как я уже упомянул в начале, Вам понадобится Python Imaging Library . Мы будем использовать wxPython для создания GUI, так что без него тоже не обойтись. И кроме того Вам понадобится загрузить python-qrcode и pyqrnative. Основное отличие, которое я обнаружил между ними - python-qrcode гораздо быстрее создаёт изображение и изображение именно привычного нам вида. По каким-то причинам, pyqrnative требует больше времени и создаёт более плотно выглядящие QR коды. Возможно, у каждого из проектов есть опции, меняющие вид кодов, но у обоих проектов отвратительная документация. В итоге пришлось копаться в исходниках больше, чем когда-либо.
Создаём QR коды
Итак, как только мы установили всё, что нам нужно, мы можем запустить следующий код и посмотреть, на что же способен Python:
Код для изменения и отображения картинки разъяснён в одной из предыдущих статей (не переведена), так что единственное, что может вызвать у Вас непонимание - два метода создания кодов: onUseQrcode и onUsePyQR. Я всего лишь взял примеры с их сайтов и немного поменял их, чтобы сгенерировать изображение с кодом. Они достаточно самоочевидны, но почти не документированны, так что я не смогу сказать Вам, что же тут происходит. И, хотя оба проекта страдают на момент написания от отсутствия документации, код, тем не менее работает:
Как можно видеть - вполне стандартный код. А этот, созданный PyQRNative, выглядит гораздо более "плотным":
Оба кода были корректно распознаны моим телефоном на Android. Так что если Вам надо создать для вашего проекта QR код - я надеюсь, эта статья Вам поможет!
Обновление от 21/05/2012
QR код является в настоящее время распространенным способом хранение информации, как на реальных объектах так и в виртуальной среде, например сканированием штрих кода можно оплатить покупку или перейти на интересующий сайт. Данную возможность можно реализовать в Python , используя Opencv, имеющий встроенную функцию для считывания информации, и библиотеки qrcode. Для начала установим соответствующие пакеты:
pip3 install opencv-python qrcode
При этом в QR коде можно закодировать достаточно длинную строку, размеры которой все же ограничены. Нас же пока что интересует хранение адресной строки сайта, и последующее считывание данных. Следует отметить что для считывания кода в программной области существует множество инструментов, мы же используем Opencv, как наиболее удобный для нас, в виду возможности интеграции с веб камерой компьютера, или видеопотоком. Для корректного исполнения кода, изображение с QR кодом следует держать одной папке с нашим скриптом. Следующий скрипт выводит декодированную строку.
for j in range(n):
cv2.line(im, tuple(bbox[j][0]), tuple(bbox[ (j+1) % n][0]), (255,0,0), 3)
data, bbox, rectifiedImage = qrDecoder.detectAndDecode(inputImage)
print("QR Code not detected")
Таким образом, в данной статье мы научились программно создавать QR код из исходных данных, а также расшифровывать его.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Она выглядит вот так:
Комментарии ( 0 ):
Штрих-коды можно считывать с помощью оптического сканера штрих-кода, но здесь, для начала, напишем скрипт Python для считывания и декодирования штрих-кодов с рисунков, где они изображены.
Для начала я расскажу вам, как считывать и декодировать штрих-коды, а также находить их на изображении. Потом вы узнаете, как сгенерировать и прочитать QR-коды в Python с помощью библиотек qrcode и OpenCV .
Для выполнения описанных здесь упражнений необходимо установить нужные нам зависимости:
Как сделать считыватель штрих-кода на Python
Как только зависимости будут установлены, откройте новый файл Python и импортируйте то, что нужно для считывателя:
У меня есть несколько изображений для тестирования, вы можете использовать любое изображение из Интернета или своего собственного диска, но вы можете получить мои тестовые изображения в этом каталоге .
Я разбил всю функциональность по функциям и первая функция, которую мы обсудим, следующая:
Функция decode() принимает изображение в виде массива numpy и использует pyzbar.decode() , который отвечает за декодирование всех штрих-кодов из одного изображения и возвращает кучу полезной информации о каждом обнаруженном штрих-коде.
Затем мы перебираем все обнаруженные штрих-коды, рисуем прямоугольник вокруг штрих-кода и печатаем тип и данные штрих-кода. Чтобы прояснить ситуацию, вот как каждый объект выглядел, если мы его распечатали:
Таким образом, функция pyzbar.decode() возвращает данные, содержащие штрих-код, тип штрих-кода, а также точки расположения в виде прямоугольника и многоугольника.
Это подводит нас к следующей функции, которую мы использовали, draw_barcode() :
Эта функция берет декодированный объект, который мы только что видели, и само изображение, она рисует прямоугольник вокруг штрих-кода с помощью функции cv2.rectangle() , или вы можете раскомментировать другую версию функции; рисование многоугольника с помощью функции cv2.line() , выбор за вами. Я предпочел прямоугольную версию.
Ну наконец то, он возвращает изображение, содержащее нарисованные штрих-коды. Теперь давайте воспользуемся этими функциями для наших примеров изображений:
В моем текущем каталоге у меня есть barcode1.jpg, barcode2.jpg и barcode3.jpg, которые являются примерами изображений отсканированного штрих-кода. Я использовал glob , чтобы получить все эти изображения в виде списка и перебирать их.
В каждый файл мы загружаем его с помощью функции cv2.imread() и используем ранее обсуждавшуюся функцию decode() для декодирования штрих-кодов, а затем показываем фактическое изображение.
Обратите внимание, что скрипт также обнаружит QR-коды, и это нормально, но для получения более точных результатов читайте вторую часть этой заметки.
Когда я запускаю сценарий, он показывает каждое изображение и печатает его тип и данные, нажмите любую клавишу, и вы получите следующее изображение, вот мой результат:
Вот последнее показанное изображение:
Это здорово, теперь у вас есть отличный инструмент для создания собственного сканера штрих-кода на Python. Я знаю, что вы все хотите читать прямо с камеры и подготовил код для считывания и обнаружения штрих-кода с камеры в реальном времени. Вот он:
Вы также можете добавить какой-то звуковой сигнал при обнаружении каждого штрих-кода, так же, как в супермаркетах, ознакомьтесь с руководством по воспроизведению звуков, которые могут помочь вам в этом.
Для получения более подробной информации приглашаю вас почитать документацию pyzbar .
Как сгенерировать и прочитать QR-код в Python
Пришло время узнать, как сгенерировать и прочитать QR-коды в Python с помощью библиотек qrcode и OpenCV .
Создание QR-кода
Во-первых, давайте начнем с создания QR-кодов, это в целом очень просто при наличии библиотеки qrcode :
Вы также можете использовать эту библиотеку для полного управления генерацией QR-кода с помощью класса qrcode.QRCode() , в котором вы можете создать экземпляр и указать размер, цвет заливки, задний цвет и исправление ошибок, например:
Параметр box_size управляет количеством пикселей в каждом прямоугольнике QR-кода, тогда как граница определяет, сколько прямоугольников должно иметь толщину.
Затем мы добавляем данные с помощью метода qr.add_data() , компилируем их в массив с помощью метода qr.make() , а затем создаем фактическое изображение с помощью метода qr.make_image() . Мы указали белый цвет как fill_color и черный как back_color , что является полной противоположностью QR-коду по умолчанию, посмотрите:
Читаем QR-код
Есть много инструментов, считывающих QR-код. Однако для этого мы будем использовать библиотеку OpenCV , поскольку она популярна и легко интегрируется с веб-камерой или любым видео.
Хорошо, откройте новый файл Python и следуйте за мной, давайте прочитаем только что сгенерированное изображение:
К счастью для нас, OpenCV уже имеет встроенный детектор QR-кода:
У нас есть изображение и детектор, давайте обнаружим и расшифруем эти данные:
Функция detectAndDecode() принимает изображение в качестве входных данных и декодирует его, чтобы вернуть кортеж из 3 значений: данные, декодированные из QR-кода, выходной массив вершин найденного четырехугольника QR-кода и выходное изображение, содержащее исправленный и преобразованный в двоичную форму QR-код.
Здесь нам просто нужны данные и bbox , который поможет нарисовать четырехугольник на изображении, и данные будут выведены на консоль!
Давай сделаем это:
Функция cv2.line() рисует отрезок линии, соединяющий две точки, мы получаем эти точки из массива bbox , который ранее был декодирован с помощью detectAndDecode() . Мы указали синий цвет ((255, 0, 0) , поскольку OpenCV использует цвета BGR) и толщину 2 .
Наконец, давайте покажем изображение и выйдем при нажатии клавиши:
После запуска распечатываются декодированные данные:
И показано следующее изображение:
Как видите, синие линии нарисованы точно в границах QR-кода. Отлично, мы закончили с этим скриптом, попробуйте запустить его с другими данными и посмотрите свои результаты!
Обратите внимание, что это идеально подходит для QR-кодов, а не для штрих-кодов.
Если вы хотите обнаруживать и декодировать QR-коды в реальном времени с помощью веб-камеры (и я уверен, что вы это делаете), вот код для этого:
Отлично, я закончил и теперь вы можете интегрировать его в свои собственные приложения!
QR Codes метод 1
Код QR (Quick Response) — это двухмерный код, содержащий информацию. Фактически, он может хранить больший объем информации, чем даже штрих-коды. Как правило, это пиксельный блок, черно-белый (черные пиксели на белом фоне). На самом деле QR-коды используются всевозможными организациями и фирмами для хранения большого количества данных о себе для своих клиентов. Итак, допустим, вы проходили мимо компании и хотели узнать о ней больше. Предположим также, что у них был QR-код на рекламном щите или визитной карточке. Как правило, вы отсканируете QR-код и получите доступ к хранящейся в нем информации. Итак, мы спрашиваем, как мы можем записать информацию в QR-код? Что ж, это легкая часть; мы можем легко сделать это с помощью Python. В этом разделе мы узнаем, как сгенерировать QR-коды с помощью Python.
Первое, что нужно сделать, это установить qrcode. Также необходимо установить подушку для генерации изображения.
После того, как мы его установили, мы импортируем его.
Затем мы определяем веб-сайт или информацию, которую хотим сохранить в QR-коде.
Теперь мы определяем переменную qr как qrcode.QRCode (), которая принимает не более 4 аргументов — версию, исправление ошибок, размер поля и границу. Параметр версии представляет собой размер QR-кода и находится в диапазоне от 1 до 40. Параметр размера блока, в частности, представляет собой размер каждого блока в пикселях. Также параметр границы определяет толщину границы. Параметр исправления ошибок определяет контроль ошибок для QR-кода.
qr = qrcode. QRCode (
version = 1 ,
error_correction = qrcode. constants . ERROR_CORRECT_L ,
box_size = 20 ,
border = 4 ,
)
После создания переменной qr мы добавляем информацию, которую хотим сохранить в ней, с помощью qr.add_data (). Для этого нужен один аргумент — информация, которую нужно добавить в QR-код.
qr. add_data ( h_url )
qr. make ( fit = True )
Затем мы создаем изображение и используем fill_color и back_color, чтобы определить цвета, которые мы хотим сделать для наших пикселей и фона. Однако здесь мы можем изменить цвета на RGB, если захотим.
Наконец, чтобы сохранить сгенерированный QR-код, мы используем save (), сохраняя его в каталоге python. Лучше всего хранить его как изображение png.
Весь код будет выглядеть примерно так:
QR-коды, метод 2
Есть много модулей для генерации QR-кодов! В этом примере мы будем использовать FoxHustle-QR.
Читайте также: