Мне хотелось бы исправить перспективу и масштаб изображения. Изображение содержит QR-код (известного размера EXPECTED_QR_SIZE), и я использую функции OpenCV для обнаружения QR-кода и применения коррекции перспективы и масштабирования к полному изображению.
Мне хотелось бы исправить перспективу и масштаб изображения. Изображение содержит QR-код (известного размера EXPECTED_QR_SIZE), и я использую функции OpenCV для обнаружения QR-кода и применения коррекции перспективы и масштабирования к полному изображению. [code]import cv2 import numpy as np
EXPECTED_QR_SIZE = 148
image = cv2.imread('page_1.jpg')
# Detect the QR code in the image qrCodeDetector = cv2.QRCodeDetector() retval, decoded_info, points, straight_qrcode = qrCodeDetector.detectAndDecodeMulti(image) points = points.astype(int) # Define the destination points for the perspective transformation dest_pts = np.array([[0, 0], [EXPECTED_QR_SIZE-1, 0], [EXPECTED_QR_SIZE-1, EXPECTED_QR_SIZE-1], [0, EXPECTED_QR_SIZE-1]], dtype='float32') M = cv2.getPerspectiveTransform(points.astype('float32'), dest_pts)
### #EDIT : The line below solves the issue ### M = np.dot(M, np.array([[1, 0, +points[0][1][0]], [0, 1, +points[0][1][1]], [0, 0, 1]]))
# Transformed the image and display it transformed_image = cv2.warpPerspective(image, M, (image.shape[1], image.shape[0])) cv2.imshow('Image', transformed_image) cv2.waitKey(0) cv2.destroyAllWindows() [/code] Вот исходное изображение [img]https://i.sstatic.net/446H6dLj.jpg[/img] Когда я запускаю приведенный выше код, QR-код исправляется, но все изображение смещается, как показано ниже. [img]https://i.sstatic.net/XIzRW7mc.jpg[/img]
[b]РЕДАКТИРОВАТЬ[/b] Добавление [code]M = np.dot(M, np.array([[1, 0, +points[0][1][0]], [0, 1, +points[0][1][1]], [0, 0, 1]])) [/code] Выполняет свою работу!