J'essaie depuis quelques jours d'obtenir une grille de sudoku à partir d'une image, et j'ai du mal à obtenir les petits carrés de la grille. Je travaille sur l'image ci-dessous. Je pensais que le traitement de l'image avec un filtre intelligent fonctionnerait bien, mais cela n'a pas fonctionné et je n'ai pas pu obtenir tous les contours de chaque carré. J'ai ensuite mis le seuil adaptatif, otsu et un seuillage classique à l'épreuve, mais à chaque fois, il ne semblait pas pouvoir capturer chaque petit carré.
Le but final est d'obtenir les cellules contenant un nombre et de reconnaître les nombres avec pytorch, donc je voudrais vraiment avoir des images nettes des nombres, donc la reconnaissance ne se gâche pas :)
Quelqu'un aurait-il une idée sur la façon d'y parvenir? Merci beaucoup d'avance! :RÉ
Réponses:
Voici une solution potentielle:
Obtenez une image binaire. Convertir l'image en niveaux de gris et seuil adaptatif
Filtrez tous les nombres et le bruit pour isoler uniquement les boîtes. Nous filtrons en utilisant la zone de contour pour supprimer les nombres, car nous ne voulons que chaque cellule individuelle
imutils.contours.sort_contours()
avec le paramètretop-to-bottom
etleft-to-right
Voici l'image binaire initiale (à gauche) et les nombres filtrés + lignes de grille réparées + image inversée (à droite)
Voici une visualisation de l'itération de chaque cellule
Les nombres détectés dans chaque cellule
Code
Remarque: L'idée de tri a été adaptée d'une ancienne réponse précédente dans l' extraction des couleurs du solveur de cube Rubrik .
la source
Si l'image ne contient que la grille sudoku bien ajustée, un moyen grossier pour y parvenir serait de diviser l'image en une grille 9X9 égale, puis d'essayer d'extraire le nombre dans chacune de cette grille.
la source
Pas:
Code:
voilé:
th3:
warped2:
résultat sudoku:
Tous les chiffres extraits:
Références:
points de grille
obtenir des fonctionnalités (de chiffres)
Exemples d'images
la source