Как создать и расшифровать QR-код с помощью Python

QR-код (код быстрого ответа) – это тип матричного штрих-кода, в котором хранятся закодированные данные. Он был назван «Код быстрого реагирования» из-за его способности сохранять и получать доступ к большим данным в кратчайшие сроки. Вы можете найти эти QR-коды везде: на плакатах, в журналах, в кинозалах, на веб-сайтах, в спортзалах, в рекламе и т. Д.

Используя Python, вы можете сгенерировать свой собственный QR-код, настроить его и декодировать информацию из QR-кода.

Настроить среду Python

Рекомендуется настроить изолированную среду для проектов Python. Сделав это, вы сможете больше узнать о зависимостях проекта.

Создание виртуальной среды

Вы можете создать виртуальную среду на Python несколькими способами: virtualenv, virtualenvwrapper или дистрибутив Anaconda. Здесь мы будем использовать virtualenv для создания виртуальной среды.

  1. Создайте папку с помощью команды mkdir [Folder] , в которой вы хотите создать этот проект.
  2. Введите cd [Folder] в командной строке, чтобы перейти в новый каталог.
  3. Введите virtualenv [Имя среды], чтобы создать виртуальную среду.
  4. Активируйте виртуальную среду, набрав [Environment Name] Scripts activate.

Установить необходимые пакеты

Установите необходимые пакеты Python с помощью команды pip. Убедитесь, что в вашей системе установлен pip .

Выполните следующую команду в командной строке.

 pip3 install opencv-python qrcode numpy Image

Если вы не хотите устанавливать все пакеты за один раз, вы можете установить их один за другим, как:

 pip3 install opencv-python

При этом устанавливается пакет opencv-python, который в основном используется для компьютерного зрения, машинного обучения и обработки изображений.

 pip3 install qrcode

Это устанавливает пакет python qrcode, который используется для генерации и чтения QR-кодов.

 pip3 install numpy

Это устанавливает пакет numpy python, который используется для работы с массивами.

 pip3 install Image

При этом устанавливается пакет Image python, который предоставляет ряд функций для загрузки изображений из файлов и создания новых изображений.

Создать QR-код

Чтобы сгенерировать код, создайте новый файл с расширением .py, в котором будет код для генерации QR-кода.

Вставьте следующий код в свой файл Python и запустите программу.

 import qrcode
# Data for which you want to make QR code
# Here we are using the URL of the website
data = "https://www.makeuseof.com/"
# File name of the QR code Image
# Change it with your desired file name
QRCodefile = "MUOQRCode.png"
# Generating the QR code
QRimage = qrcode.make(data)
# Saving image into a file
QRimage.save(QRCodefile)

Это создаст изображение QR-кода (MUOQRCode.png) для заданных данных (в данном случае www.makeuseof.com ). Сгенерированный QR-код будет выглядеть примерно так:

Создайте индивидуальный QR-код

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

Изменение изображения и размера поля

Вы можете изменить размер изображения QR-кода с помощью параметра версии в классе QRCode. Он принимает целое число от 1 до 40, где 1 эквивалентно матрице 21×21, а 40 эквивалентно матрице 185×185. Обратите внимание, что данные не умещаются в указанном размере, версия автоматически масштабируется.

Кроме того , вы можете изменить размер окна , используя box_size параметр в классе QRCode. Он определяет пиксели каждого поля в QR-коде.

 # Importing libraries
import qrcode
import numpy as np
# Data which for you want to make QR code
# Here we are using URL of website
data = "https://www.makeuseof.com/"
# Name of the QR code Image file
QRCodefile = "CustomisedImgBoxQRCode.png"
# instantiate QRCode object
qrObject = qrcode.QRCode(version=1, box_size=12)
# add data to the QR code
qrObject.add_data(data)
# compile the data into a QR code array
qrObject.make()
image = qrObject.make_image()
image.save(QRCodefile)
# print the image size (version)
print("Size of the QR image(Version):")
print(np.array(qrObject.get_matrix()).shape)

Будет создан следующий файл изображения QR-кода:

Кроме того, будет отображаться следующий вывод:

 Size of the QR image(Version):
(33, 33)

Обратите внимание, что версия автоматически увеличивается в соответствии с размером данных.

Изменение цвета заливки

Вы можете изменить цвет заливки QR-кода с помощью параметра fill_color .

 # Importing library
import qrcode
# Data for which you want to make QR Code
# Here we are using URL of website
data = "https://www.makeuseof.com/"
# Name of the QR Code Image file
QRCodefile = "CustomisedFillColorQRCode.png"
# instantiate QRCode object
qrObject = qrcode.QRCode()
# add data to the QR code
qrObject.add_data(data)
# compile the data into a QR code array
qrObject.make()
image = qrObject.make_image(fill_color="red")
# Saving image into a file
image.save(QRCodefile)

Будет создан следующий файл изображения QR-кода:

Изменение цвета фона

Вы можете изменить цвет фона QR-кода с помощью параметра back_color .

 # Importing library
import qrcode
# Data for which you want to make QR Code
# Here we are using URL of website
data = "https://www.makeuseof.com/"
# Name of the QR Code Image file
QRCodefile = "CustomisedBGColorQRCode.png"
# instantiate QRCode object
qrObject = qrcode.QRCode()
# add data to the QR code
qrObject.add_data(data)
# compile the data into a QR code array
qrObject.make()
image = qrObject.make_image(back_color="blue")
# Saving image into a file
image.save(QRCodefile)

Будет создан следующий файл изображения QR-кода:

Изменение толщины границы

Вы можете изменить толщину границы QR-кода с помощью параметра границы в классе QRCode.

 # Importing libraries
import qrcode
# Data for which you want to make QR Code
# Here we are using URL of website
data = "https://www.makeuseof.com/"
# Name of the QR Code Image file
QRCodefile = "CustomisedBorderQRCode.png"
# instantiate QRCode object
qrObject = qrcode.QRCode(border=10)
# add data to the QR code
qrObject.add_data(data)
# compile the data into a QR code array
qrObject.make()
image = qrObject.make_image()
image.save(QRCodefile)

Будет создан следующий файл изображения QR-кода:

Расшифровать QR-код с помощью изображения QR-кода

Вы можете декодировать информацию из изображения QR-кода с помощью библиотеки Python OpenCV. OpenCV имеет встроенный детектор QR-кода. Используя детектор, вы можете расшифровать данные из QR-кода.

 # Import Library
import cv2
# Name of the QR Code Image file
filename = "MUOQRCode.png"
# read the QRCODE image
image = cv2.imread(filename)
# initialize the cv2 QRCode detector
detector = cv2.QRCodeDetector()
# detect and decode
data, vertices_array, binary_qrcode = detector.detectAndDecode(image)
# if there is a QR code
# print the data
if vertices_array is not None:
print("QRCode data:")
print(data)
else:
print("There was some error")

Если предоставленное изображение является действительным QR-кодом, будут отображаться декодированные данные. В этом случае будет сгенерирован следующий вывод:

 QRCode data:
https://www.makeuseof.com/

Расшифруйте QR-код в реальном времени с помощью веб-камеры

В большинстве случаев люди склонны использовать веб-камеру для сканирования QR-кодов. Используя потенциал библиотеки Python и OpenCV, вы можете легко декодировать данные из QR-кода.

 import cv2
# initalize the camera
cap = cv2.VideoCapture(0)
# initialize the OpenCV QRCode detector
detector = cv2.QRCodeDetector()
while True:
_, img = cap.read()
# detect and decode
data, vertices_array, _ = detector.detectAndDecode(img)
# check if there is a QRCode in the image
if vertices_array is not None:
if data:
print("QR Code detected, data:", data)
# display the result
cv2.imshow("img", img)
# Enter q to Quit
if cv2.waitKey(1) == ord("q"):
break
cap.release()
cv2.destroyAllWindows()

Когда вы выполните этот код, ваша веб-камера откроется автоматически. Просто удерживайте QR-код перед веб-камерой, и данные будут декодированы и отображены в командной строке.

Кодирование и декодирование QR-кода стало проще

Используя эту статью, вы можете легко кодировать, декодировать и настраивать QR-коды по своему усмотрению. Вы даже можете создать полное приложение сканера-генератора QR-кода, используя предоставленный код.

Есть несколько творческих способов использования QR-кодов . Проявите творческий подход и используйте QR-коды по своему усмотрению.