Я использую opencv и pyzbar для чтения кода QR на изображении. Библиотека Pyzbar также возвращает форму изображения и координаты местоположения qr. Я хотел бы выровнять qr вертикально / прямо, если изображение с qr не было идеально выровнено. Я видел примеры с использованием обнаружения по признакам, но для этого требуются два изображения: эталонное изображение и используемое изображение. Я просто хочу выровнять обрезанное изображение с помощью QR-кода. Это мой стартовый код. Я изменил его, чтобы выбрать изображение из URL для простоты использования.
import cv2
import numpy as np
import pyzbar.pyzbar as pyzbar
from skimage import io
url = "https://d33wubrfki0l68.cloudfront.net/19994bca1018ba79dd954bca9edc627dcd1f1dc0/d9ac1/wp-content/uploads/2018/11/19.jpg"
image = io.imread(url)
# image = cv2.imread("qr.jpeg")
decodedObjects = pyzbar.decode(image)
(x, y, w, h) = decodedObjects[0].rect
cropped = image[y-5:(y + h+5),x-5: (x + w+7)]
cv2.imshow("cropped", cropped)
cv2.imwrite("thumbnail.png", cropped)