penCV jest otwartą biblioteką funkcji wykorzystywanych podczas obróbki obrazu. Stworzona została w językach C i C++ i pozwala na korzystanie z wielu udogodnień związanych z szeroko pojętą dziedziną wizji komputerowej.
Początki OpenCV wiążą się z firmą Intel, słynącą na całym świecie z produkcji procesorów. Prowadzono w niej wiele badań dotyczących aplikacji wykorzystujących skomplikowane obliczeniowo algorytmy - między innymi związanych z grafiką komputerową. Pracownicy Intela odwiedzali w tamtym czasie wiele ośrodków badawczych na całym świecie zajmujących się przetwarzaniem obrazów i doszli do pewnych spostrzeżeń. Wynikało z nich, że różne ośrodki naukowe prowadzące badania na podobny temat budowały biblioteki na własny użytek służące do przetwarzania obrazu, które nie były do końca usystematyzowanymi implementacjami. Biorąc pod uwagę to spostrzeżenie firma Intel zainteresowała się projektem stworzenia uniwersalnej, otwartej biblioteki do badań związanych z tematyką wizji komputerowej. W roku 1999 podjęto prace w tym kierunku. Bibliotekę miała cechować wysoka wydajność, czytelność kodu oraz przede wszystkim otwartość. Dopiero w roku 2007 powstała pierwsza finalna wersji tej biblioteki i od tego czasu cieszy się niesłabnącym uznaniem. OpenCV jest nadal rozwijana i dopracowywana, a przy tym pozostaje otwarta i całkowicie darmowa nawet do celów komercyjnych.
Warto też wspomnieć, że biblioteka OpenCV jest projektowana z myślą o przenośności na różne platformy. W rzeczywistości można ją uruchomić na platformach Windows, Linux, MacOS, BSD, Solaris, Android OS, iOS i innych. Warto też wspomnieć, że istnieją także alternatywne interfejsy programistyczne, które pozwalają na używanie funkcji biblioteki pisząc w językach : Java, C#, Python, Ruby i innych. Możliwe jest także zintegrowanie OpenCV z pakietem Matlab.
Celem stworzenia biblioteki OpenCV było dostarczenie prostego w użyciu, a zarazem potężnego narzędzia, na bazie których programiści mogliby w sposób relatywnie szybki tworzyć zaawansowane projekty z dziedziny wizji komputerowej. Rezultatem tego założenia jest na dzień dzisiejszy ponad 500 funkcji, które oferuje OpenCV programistom związanym z grafiką komputerową. Funkcje te dotyczą np.: operacji na histogramach, określania konturów, wykonywania różnych operacji na obrazach (operacje logiczne, splot, zmiana przestrzeni kolorów itp.), segmentacji obrazu, śledzenia ruchów obiektów, przechwytywania strumienia obrazów z kamer, projekcji i wizji 3D, uczenia maszynowego (mechanizmów wspomagania automatycznym przekształcaniem danych w informacje - bazujące przede wszystkim na statystycznym dopasowaniu wzorców oraz klasteryzacji).
Jak wspomniano wcześniej, biblioteka OpenCV została stworzona w językach C i C++, dlatego najlepsza wydajność zapewniona jest jeśli aplikacja, wykorzystująca OpenCV, pisana jest w tych językach. Twórcy biblioteki chcąc zapewnić jej przenośność, stworzyli także alternatywne interfejsy programistyczne, które pozwalają na wykorzystanie funkcji biblioteki w innych językach programowania i dostosowanie ich do innych platform. Działają one na zasadzie funkcji lub klas opakowujących (ang. wrapper), które zapewniają wywołanie odpowiednich metod biblioteki bazowej oraz konwersje typów argumentów. Programiści urządzeń mobilnych Android OS chcący wykorzystać bibliotekę OpenCV mogą tworzyć aplikacje w dwojaki sposób albo zdecydować się na skorzystanie z klas opakowujących, albo pisać kod źródłowy w języku C++. Twórcy Androida zalecają programowanie przy wykorzystaniu Android SDK (tak jak to zostało opisane w artykule "Jak zacząć z OpenCV na Androidzie"), czyli w języku Java, aniżeli w Android NDK, jednak decyzja należy w tym wypadku do programisty. Wybór języka C++ jest najbardziej uzasadniony w przypadku gdy programista dysponuje już kodem C++, wtedy może on spróbować uruchomić taki kod na platformie Android. Programiście, który zaczyna pisanie programu od początku w Androidzie, wygodniej będzie napisać aplikację w języku Java z wykorzystaniem klas opakowujących, gdyż wywołania metod tych klas są przetestowane i wolne od błędów. Natomiast programując z wykorzystaniem biblioteki OpenCV w języku C++ na platformie Android nie ma gwarancji, że dana funkcja zadziała identycznie jak np. na komputerze PC. Poza tym właściwa konfiguracja środowiska programistycznego jest w takim wypadku trudniejsza i obarczona dużymi trudnościami.
Tagi
Android8
Aplikacje Andromasters5
archiwizowanie smsów1
BlackBerry1
Eclipse IDE1
Google Drive1
iOS1
kopia zapasowa smsów1
openCV3
platformy mobilne1
sms backup1
smsy w chmurze1
smsy w Google Drive1
systemy wizyjne1
szyfrowane smsy w chmurze1
teoretyczne1
Windows Phone1
wykrywanie znaków drogowych2
znaki drogowe2
grajewski@patryk.info
K2 Comments
-
bharat thakkar czwartek, 03 lipiec 2014
Biblioteka OpenCV
16408
Comment
O
Administrator
Patryk Grajewski - administrator i założyciel Andromasters. Od dziecka pasjonat informatyk. Specjalizuje się w programowaniu na przenośne urządzenia z systemem Android.