Hello Java my old friend…

Czy mieliście kiedykolwiek sytuację, że biblioteka, którą wybraliście okazała się nie spełniać stawianych przed nią wymagań? Czy po pewnym, nawet krótkim, czasie doszliście do wniosku, że trzeba znaleźć jakieś obejście problemów by móc kontynuować pracę?

 

Nie planowałem samodzielnego pisania algorytmów przetwarzania obrazu – w końcu po co wymyślać koło na nowo? Do operacji na obrazach postanowiłem wykorzystać bibliotekę OpenCV. Niestety nie zauważyłem oficjalnego wsparcia dla platformy .NET i języka C#, więc pierwszy wybór padł na OpenCV.NET.

 

Podczas pisania prostego narzędzia, które pomogłoby mi stworzyć bazę znaków do dalszego przetwarzania obrazu pojawiły się problemy. Okazało się, że przy próbie uruchomienia występuje błąd z informacją o brakującej bibliotece. Brak wyraźnie zaznaczonej dokumentacji na stronie projektu spowodował, że na początkowym etapie wolałem poszukać lepiej wspieranej alternatywy. Tym razem trafiłem na Emgu CV – według informacji w sieci posiada dużą społeczność, dokumentację. Rozmiaru community nie jestem w stanie oszacować, ale odpowiedzi na moje podstawowe problemy dość szybko udało mi się znaleźć. Jednak wciąż był to tylko nieoficjalny wrapper na oryginalną bibliotekę. Przy przerabianiu obrazu na czarno-biały okazało się, że nie jest wspierany algorytm Otsu. Co prawda możliwe było jego wybranie, ale próba wywołania kończyła się błędem.

 

Do wyboru miałem każdorazowe sprawdzanie, czy dana funkcja jest wspierana, poszukanie innego wrappera oraz własnoręczne pisanie każdego algorytmu, który chciałbym wykorzystać w aplikacji. Ostatnia opcja pomimo swojego waloru edukacyjnego odpadała z braku czasu. Doba niestety ma 24 godziny, które trzeba rozdysponować pomiędzy rodzinę, pracę i hobby bez długu w godzinach przeznaczonych na sen.

 

Jednak zapaliła mi się żarówka z nowym pomysłem. Open CV oficjalnie wspiera C++, Pythona oraz Javę. A ja kiedyś próbowałem pisać w Javie, nawet ostatnio przebąkiwałem, że dobrze byłoby sobie przypomnieć jak to się robi by poprawić swoje kompetencje. W związku z tym problem z biblioteką planuję rozwiązać w sposób, który może okazać się pracochłonny, ale na pewno mniej niż wymyślanie koła na nowo. Napiszę w Javie usługę, która będzie przyjmowała plik z obrazem do obróbki oraz rozpoznawania tekstu, a zwracała rozpoznaną zawartość. Reszta systemu napisana w ASP.NET i C# będzie się z nią komunikowała i przetwarzała zwracane dane.

 

 

PS.

Program, który przetwarza obrazy na postać czarno-białą znajduje się w repozytorium. Projekt ma nazwę DSP.ImageConverter.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *