Улучшение изображения QRCode с помощью Python 3 OpenCV
Я использую пакет qreader, который читает QRCodes, но только если изображение идеально. Итак, мне нужно отредактировать фотографии, где находится QRCode, чтобы их читал qreader. Я пытаюсь сделать это с помощью пакета OpenCV, чтобы улучшить фотографию QRCode, используя следующий код:
import qreader
import cv2
import numpy
#read in grayscale:
img = cv2.imread(filein, cv2.IMREAD_GRAYSCALE)
#remove noise:
img = cv2.fastNlMeansDenoising(img, 12, 12, 7, 21)
#convert to binary b/w:
(thresh, img) = cv2.threshold(img, 290, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
thresh = 250 #85
img = cv2.threshold(img, thresh, 255, cv2.THRESH_BINARY)[1]
#morpho transformation:
kernel = numpy.ones((5, 5), numpy.uint8)
img = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
img = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
img = cv2.dilate(img, kernel,iterations=1)
img = cv2.erode(img, kernel,iterations=1)
#resize the image to 116x116 px:
img = cv2.resize(img, (116, 116), interpolation=cv2.INTER_CUBIC)
#save the image:
cv2.imwrite(fileout, img)
Это изображения:
"Идеальное" изображение, которое может прочитать qreader:
Фотография QRCode:
Отредактированная фотография QRCode, которая не может быть прочитана qreader:
Мне нужна помощь, чтобы отредактировать фотографию QRCode с помощью OpenCV, чтобы она выглядела как можно лучше к идеальному изображению. Если кто-нибудь знает лучший способ, пожалуйста, дайте мне знать.
EDIT1: субпакет ArUco выглядит векселем.