Я делал забавный проект: решение Sudoku с входного изображения с использованием OpenCV (как в Google goggles и т.д.). И я выполнил задание, но в конце я нашел небольшую проблему, ради которой я пришел сюда.
Я программировал, используя Python API OpenCV 2.3.1.
Ниже приведено то, что я сделал:
- Прочтите изображение
- Найти контуры
- Выберите ту, которая имеет максимальную площадь (а также несколько эквивалентна квадрату).
-
Найдите угловые точки.
например. ниже:
( Обратите внимание на то, что зеленая линия правильно совпадает с истинной границей судоку, поэтому судоку можно правильно деформировать. Проверьте следующее изображение)
-
превратить изображение в идеальный квадрат
например, изображение:
-
Выполните OCR (для которого я использовал метод, который я дал в OCR OCR в OpenCV-Python)
И этот метод работал хорошо.
Проблема:
Отметьте это изображение.
Выполнение этапа 4 на этом изображении дает следующий результат:
Нарисованная красная линия - это исходный контур, который является истинным контуром границы судоку.
Нарисованная зеленая линия представляет собой аппроксимированный контур, который будет контуром искаженного изображения.
Что, конечно, есть разница между зеленой линией и красной линией на верхнем крае судоку. Поэтому, пока деформирование, я не получаю первоначальную границу судоку.
Мой вопрос:
Как я могу исказить изображение на правильной границе судоку, т.е. красную линию ИЛИ как я могу удалить разницу между красной линией и зеленой линией? Есть ли какой-либо метод для этого в OpenCV?