Simítás, Niblack küszöbölés megfelelő paraméterekkel
Figyeljünk arra, hogy a detektált sötét színű komponensek legyenek maximális intenzitásértékűek az eredményképen!
Mentsük az eredményképet Sudoku_niblack.png néven!
Legnagyobb zárt területű komponens megtartása
A findContours() eredményét járjuk végig és keressük meg a legnagyobb területűt a contourArea() függvény használatával!
Egy kontúr megrajzolása kitöltötten is lehetséges a drawContour() függvénnyel! (Nézzen utána a dokumentációban!)
Csak azokon a helyeken tartsuk meg az intenzitásértékeket, ahol a maszk nem 0 értékű!
Mentsük a két képet Sudoku_mask.png és Sudoku_cut.png néven!
Forgatás
Hough transzformáció végrehajtása aCanny élképen.
Egyenes helyzetbe forgatási szög számítása.
Feltételezhetjük, hogy nincs számottevő perspektív torzulás, így elegendő a kép középpontja körüli forgatás.
A szög a legnagyobb gyakorisággal előforduló egyenes theta paramétere legyen. Kihasználhatjuk, hogy az OpenCV HoughLines() függvénye a szavazatok sorrendjében adja vissza az egyenes paramétereket!
Feltételezhetjük, hogy az elforgatandó szög (-30,+30) fok közötti. Figyeljünk arra, mit jelent a Hough trafó eredménye OpenCV-ben!
Képek (eredeti és feldolgozott) elforgatása a középpont körül a megfelelő szöggel.
Ha az előző részfeladatot nem sikerül megoldani, használhatunk konstans szögértéket is!
Mentsük a feldolgozott eredményképet Sudoku_cut_rot.png néven!
Számok detektálása
Távolítsuk el a tábla keretet!
Pl. floodFill() a megfelelő kontúr első pontjából indítva, vagy legnagyobb területű összefüggő komponens eltávolítása.
Komponensek leválogatása a számok mérettartományán belül.
Komponens körvonalak vetítése jól látható színnel az elforgatott eredeti képre.
Írjuk ki konzolra szövegesen, melyik Sudoku tábla (sor, oszlop) pozíciókon találtunk számjegyeket!