Python - cоздание и считывание QR кода
 
			QR код является в настоящее время распространенным способом хранение информации, как на реальных объектах так и в виртуальной среде, например сканированием штрих кода можно оплатить покупку или перейти на интересующий сайт. Данную возможность можно реализовать в Python , используя Opencv, имеющий встроенную функцию для считывания информации, и библиотеки qrcode. Для начала установим соответствующие пакеты:
pip3 install opencv-python qrcode 
import qrcode # импотируем модуль 
string = "https://myrusakov.ru" # строка для перевода в QR
file = "myrusakov_out.jpg" # файл для хранения полученного штрих кода
image = qrcode.make(string) # метод отвечает за преобразование строки в QR
image.save(file) # сохранение  полученного объекта в  файл  myrusakov_out.jpg
При этом в QR коде можно закодировать достаточно длинную строку, размеры которой все же ограничены. Нас же пока что интересует хранение адресной строки сайта, и последующее считывание данных. Следует отметить что для считывания кода в программной области существует множество инструментов, мы же используем Opencv, как наиболее удобный для нас, в виду возможности интеграции с веб камерой компьютера, или видеопотоком. Для корректного исполнения кода, изображение с QR кодом следует держать одной папке с нашим скриптом. Следующий скрипт выводит декодированную строку.
import cv2   # импорт модуля  из библиотеки Opencv
import numpy as np # модуль обработки массивов
import sys  # системный модуль
import time  
# Первый блок проверяет условие, передан ли скрипту в командной строке дополнительный аргумент в виде картинки **QR кода**. Если первое условие ложно, то считывается указанная нами картинка. 
if len(sys.argv)>1:
    inputImage = cv2.imread(sys.argv[1])  
else:
    inputImage = cv2.imread("myrusakov_out.jpg") #  стандартный метод opencv для считывания изображения
#  Создание функции выводящей в отдельном окне изображение QR с синим обрамлением. 
def display(im, bbox):
    n = len(bbox)
    for j in range(n):
        cv2.line(im, tuple(bbox[j][0]), tuple(bbox[ (j+1) % n][0]), (255,0,0), 3)
 
    # Display results
    cv2.imshow("Results", im)
# В Opencv имеется  встроенный метод детектор QR
qrDecoder = cv2.QRCodeDetector() # создание объекта детектора
 
# Нахождение и декодирование нашего кода. Метод **detectAndDecode** возвращает  кортеж из трех  значений которыми кодируется QR, где первый аргумент data содержит декодированную строку, bbox - координаты вершин нашего изображения и rectifiedImage,  содержит **QR** изображение в виде массива пикселей.
data, bbox, rectifiedImage = qrDecoder.detectAndDecode(inputImage)
if len(data)>0:
    print("Decoded Data : {}".format(data)) # вывод декодированной строки
    display(inputImage, bbox)
    #rectifiedImage = np.uint8(rectifiedImage);
    #cv2.imshow("Rectified QRCode", rectifiedImage); 
else:
    print("QR Code not detected")  
    cv2.imshow("Results", inputImage)
cv2.waitKey(0)
cv2.destroyAllWindows()
Таким образом, в данной статье мы научились программно создавать QR код из исходных данных, а также расшифровывать его.
- 
					Создано 24.09.2020 13:00:00  
- 
					 Михаил Русаков Михаил Русаков
 
			 
			 
		 
				 
			 
				 
				 
				 
				
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.