Una volta creato il "Sudoku Solver", ho scoperto che, copiare manualmente gli schemi del Sudoku all'interno dell'applicativo da me creato per la loro risoluzione, mi genera un lieve fastidio. Per eliminare questo problema ho deciso di aggiungere la funzionalità di importazione dello schema da immagine. Dunque mi basterà passare l'immagine del Sudoku sullo scanner e poi darlo in pasto al programma.
Come fare? Qui entriamo di prepotenza nel campo dell'elaborazione delle immagini/visione artificiale, cercherò di rendere più comprensibile il possibile il processo di elaborazione. Carne al fuoco ne metterò parecchia, spero di non perdermi nei meandri dell'impresa.
Il primo semplice passo è di aggiungere al volo la voce “Import” nel menù principale del “Sudoku solver”, selezionando poi “from image” si aprirà una finestra di dialogo che ci permetterà di selezionare l'immagine contenente lo schema del matematico gioco da importare.
Per la spiegazione del "come" ci spostiamo di sezione cliccando qui.
Il risultato finale è riassumibile mediante il seguente screenshot.
FIGURA 1: In alto a sinistra l'immagine caricata, in basso a sinistra l'immagine elaborata, a destra lo schema compilato automaticamente. Cliccare sull'immagine per ingrandirla.
Adesso ho la possibilità di barare alla grande e risolvere gli schemi Sudoku diabolici in men che non si dica senza neppure fare la fatica di copiare a mano i numeri nello schema! Riporto di seguito la soluzione dello schema in figura 1.
FIGURA 2: La soluzione dello schema in figura 1. Cliccare sull'immagine per ingrandirla.
In allegato nel file zip trovate l'eseguibile e per i più curiosi e temerari c'è anche il sorgente (con qualche schema e l'immagine usata nell'esempio di cui la figura sopra).
NOTA: Durante lo sviluppo di questo "plugin" mi sono scontrato, dopo un aggiornamento di versione di Ubuntu, in un grave problema con la compilazione nell'ambiente di sviluppo QDevelop. Alla fine dopo svariati tentativi infruttuosi ho migrato il progetto (facilmente direi) all'ambiente di sviluppo Qt Project (e qui tutto è tornato a funzionare)