Cześć, piszę skrypt, który zamienia labirynt na dwuwymiarową tablicę zawierającą 0 lub 1. Co ważne labirynt ma postać "siatki": nakładając siatkę na labirynt ściany będą zawarte w polach, a nie na krawędziach pól. Nie jest tak, że ma cieniutkie ściany i szerokie korytarze.
Mój skrypt:
- Otwiera plik zdjęciowy
- szuka kartki (opencv)
- obcina jej marginesy
- warpuje labirynt
- proguje obraz
- a następnie (przynajmniej według mojej koncepcji) liczy sobie ile jest obok siebie białych pikseli w każdym rzędzie na obrazie i wybiera ich najmniejszą ilość (w pierwszym i ostatnim rzędzie siatki jest tylko jedno białe puste pole wejścia lub wyjścia z labiryntu, a reszta to ściany) na tej podstawie oblicza jaką szerokość ma pojedyncze pole, a zatem i wysokość (pola są kwadratowe),
- następnie dzieli cały obraz na takie pola i sprawdza średnią wartość tego pola (bardziej czarna czy bardziej biała), a następnie tworzy tablicę dwuwymiarową i wpisuje na tej podstawie 1 lub 0.
Niestety, problem jest taki, że zdjęcie kartki nigdy nie jest równe (rogi są nieco bardziej wystające, a boki nieco bardziej wklęsłe, przez co warpowanie zdjęcia, a następnie zrobienie kroku 6 i 7 nie zawsze działa i np. labirynt ma inny wymiar siatki niż w rzeczywistości np. 10x12 zamiast 10x13, czy ktoś miałby jakiś pomysł na bardziej niezawodny sposób na przełożenie takiego labiryntu na tablicę? Za wszelkie wskazówki będę wdzięczny
