Я пишу скрипт для обработки изображения и извлечения 2D-штрих-кода PDF417, который затем будет декодирован. Я извлекаю ROI без проблем, но когда я пытаюсь исправить перспективу с помощью cv2.warpPerspective
, результат не такой, как ожидалось.
Ниже приведен извлеченный штрих-код, красные точки — обнаруженные углы:
Это результирующее изображение:
Это код, который я использую для преобразования (значения находятся по сценарию, но для предыдущих изображений следующие):
box_or = np.float32([[23, 30],[395, 23],[26, 2141],[389, 2142]])
box_fix = np.float32([[0,0],[415,0],[0,2159],[415,2159]])
M = cv2.getPerspectiveTransform(box_or,box_fix)
warped = cv2.warpPerspective(img,M,(cols,rows))
Я проверил и не нашел ничего плохого в коде, но преобразование определенно неправильное. Величина искажения перспективы в извлеченной области интереса минимальна, но может повлиять на процесс декодирования.
Итак, есть ли способ избавиться от искажения перспективы? Я делаю что-то неправильно? Это известная ошибка или что? Любая помощь очень приветствуется.
Кстати, я использую OpenCV 3.3.0