В последние несколько дней я пытался получить сетку судоку из картинки, и я изо всех сил пытался получить меньшие квадраты сетки. Я работаю над картинкой ниже. Я думал, что обработка изображения с помощью фильтра canny будет работать нормально, но это не сработало, и я не мог получить каждый контур каждого квадрата. Затем я протестировал адаптивный порог, отсу и классический порог, но каждый раз казалось, что он не может охватить каждый маленький квадрат.
Конечная цель состоит в том, чтобы получить ячейки, содержащие число, и распознать числа с помощью pytorch, поэтому мне бы очень хотелось получить несколько чистых изображений чисел, чтобы распознавание не испортилось :)
У кого-нибудь будет идея, как этого добиться? Заранее большое спасибо! : D
Ответы:
Вот потенциальное решение:
Получить бинарное изображение. Преобразование изображения в оттенки серого и адаптивный порог
Отфильтруйте все числа и шум, чтобы изолировать только коробки. Мы фильтруем, используя контурную область, чтобы удалить числа, так как мы хотим, чтобы каждая отдельная ячейка
imutils.contours.sort_contours()
сtop-to-bottom
иleft-to-right
параметромВот исходное двоичное изображение (слева) и отфильтрованные числа + восстановленные линии сетки + перевернутое изображение (справа)
Вот визуализация итерации каждой ячейки
Обнаруженные числа в каждой ячейке
Код
Примечание. Идея сортировки была адаптирована из старого предыдущего ответа в разделе «Извлечение цвета из кубического решателя Рубрика» .
источник
Если изображение содержит только плотно подогнанную сетку судоку, один грубый способ добиться этого - разделить изображение на равную сетку 9X9, а затем попытаться извлечь число в каждой из этих сеток.
источник
шаги:
Код:
искривленных:
th3:
warped2:
результат судоку:
Все извлеченные цифры:
Ссылки:
точки сетки
получить функции (из цифр)
Образцы изображений
источник