Как убрать дефекты выпуклости в квадрате судоку?

Я выполнял забавный проект :Решение судоку из входного изображения с использованием OpenCV (, как в очках Google и т. д. ). И я выполнил задание, но в конце нашел небольшую проблему, ради которой и пришел сюда.

Я программировал с использованием Python API OpenCV 2.3.1.

Ниже показано, что я сделал.:

  1. Прочтите изображение
  2. Найдите контуры
  3. Выберите тот, у которого максимальная площадь, (и также несколько эквивалентный квадрату ).
  4. Найдите угловые точки.

    напр. приведено ниже:

    enter image description here

    (Обратите внимание, что зеленая линия правильно совпадает с истинной границей судоку,поэтому судоку можно правильно деформировать . Проверьте следующее изображение)

  5. деформируйте изображение до идеального квадрата

    , например, изображение:

    enter image description here

  6. Выполните распознавание символов (, для которого я использовал метод, описанный в Простое распознавание цифр в OpenCV -Python)

И этот метод работал хорошо.

Проблема:

Проверьте это изображение.

Выполнение шага 4 на этом изображении дает следующий результат.:

enter image description here

Нарисованная красная линия является исходным контуром, который является истинным контуром границы судоку.

Нарисованная зеленая линия представляет собой аппроксимированный контур, который будет контуром искаженного изображения.

Что, конечно, есть разница между зеленой линией и красной линией на верхнем краю судоку. Поэтому во время деформации я не получаю исходную границу судоку.

Мой вопрос:

Как исказить изображение на правильной границе судоку, т. е. на красной линии ИЛИ как убрать разницу между красной и зеленой линиями? Есть ли способ для этого в OpenCV?

179
задан Community 23 May 2017 в 00:31
поделиться