OpenCV - przegląd
OpenCV to wieloplatformowa biblioteka, za pomocą której możemy rozwijać się w czasie rzeczywistym computer vision applications. Skupia się głównie na przetwarzaniu obrazu, przechwytywaniu i analizie wideo, w tym na funkcjach takich jak wykrywanie twarzy i wykrywanie obiektów.
Zacznijmy ten rozdział od zdefiniowania terminu „Computer Vision”.
Wizja komputerowa
Komputerowe widzenie można zdefiniować jako dyscyplinę, która wyjaśnia, jak rekonstruować, przerywać i rozumieć scenę 3D na podstawie jej obrazów 2D, pod względem właściwości struktury obecnej w scenie. Zajmuje się modelowaniem i odtwarzaniem ludzkiego wzroku za pomocą oprogramowania i sprzętu komputerowego.
Wizja komputerowa w znacznym stopniu pokrywa się z następującymi polami -
Image Processing - Koncentruje się na manipulacji obrazem.
Pattern Recognition - Wyjaśnia różne techniki klasyfikacji wzorców.
Photogrammetry - Chodzi o uzyskanie dokładnych pomiarów z obrazów.
Przetwarzanie obrazu komputerowego a przetwarzanie obrazu
Image processingzajmuje się transformacją obrazu w obraz. Dane wejściowe i wyjściowe przetwarzania obrazu to obrazy.
Computer visionjest konstruowaniem wyraźnych, znaczących opisów obiektów fizycznych na podstawie ich obrazu. Wynikiem widzenia komputerowego jest opis lub interpretacja struktur w scenie 3D.
Zastosowania widzenia komputerowego
Tutaj wymieniliśmy niektóre z głównych domen, w których widzenie komputerowe jest intensywnie wykorzystywane.
Aplikacja robotyki
Lokalizacja - automatyczne określanie lokalizacji robota
Navigation
Unikanie przeszkód
Montaż (kołek w otworze, spawanie, malowanie)
Manipulacja (np. Manipulator robota PUMA)
Interakcja człowieka z robotem (HRI) - inteligentna robotyka do interakcji z ludźmi i służenia im
Zastosowanie leku
- Klasyfikacja i wykrywanie (np. Klasyfikacja zmian lub komórek i wykrywanie guzów)
- Segmentacja 2D / 3D
- Rekonstrukcja 3D narządów ludzkich (MRI lub USG)
- Chirurgia robotyczna sterowana wzrokiem
Aplikacja automatyki przemysłowej
- Inspekcja przemysłowa (wykrywanie wad)
- Assembly
- Odczyt kodów kreskowych i etykiet opakowań
- Sortowanie obiektów
- Zrozumienie dokumentów (np. OCR)
Aplikacja bezpieczeństwa
Biometria (tęczówka, odcisk palca, rozpoznawanie twarzy)
Nadzór - Wykrywanie pewnych podejrzanych działań lub zachowań
Aplikacja transportowa
- Autonomiczny pojazd
- Bezpieczeństwo, np. Monitorowanie czujności kierowcy
Funkcje biblioteki OpenCV
Korzystając z biblioteki OpenCV, możesz -
Czytaj i pisz obrazy
Przechwytuj i zapisuj filmy
Przetwarzaj obrazy (filtr, transformacja)
Wykonaj wykrywanie funkcji
Wykryj określone obiekty, takie jak twarze, oczy, samochody, na filmach lub obrazach.
Przeanalizuj wideo, tj. Oszacuj ruch w nim, odejmij tło i śledź znajdujące się w nim obiekty.
OpenCV został pierwotnie opracowany w C ++. Oprócz tego zapewniono powiązania Python i Java. OpenCV działa na różnych systemach operacyjnych, takich jak Windows, Linux, OSx, FreeBSD, Net BSD, Open BSD itp.
Ten samouczek wyjaśnia koncepcje OpenCV z przykładami używającymi powiązań Java.
Moduły biblioteczne OpenCV
Poniżej znajdują się główne moduły biblioteczne biblioteki OpenCV.
Podstawowa funkcjonalność
Ten moduł obejmuje podstawowe struktury danych, takie jak Scalar, Point, Range, itp., Które są używane do tworzenia aplikacji OpenCV. Oprócz tego zawiera również tablicę wielowymiarowąMat, który służy do przechowywania obrazów. W bibliotece Java OpenCV ten moduł jest zawarty jako pakiet o nazwieorg.opencv.core.
Przetwarzanie obrazu
Ten moduł obejmuje różne operacje przetwarzania obrazu, takie jak filtrowanie obrazu, transformacje geometryczne obrazu, konwersja przestrzeni kolorów, histogramy itp. W bibliotece Java OpenCV moduł ten jest zawarty w pakiecie o nazwie org.opencv.imgproc.
Wideo
W tym module omówiono koncepcje analizy wideo, takie jak przewidywanie ruchu, odejmowanie tła i śledzenie obiektów. W bibliotece Java OpenCV ten moduł jest zawarty w pakiecie o nazwieorg.opencv.video.
We / wy wideo
Ten moduł wyjaśnia przechwytywanie wideo i kodeki wideo przy użyciu biblioteki OpenCV. W bibliotece Java OpenCV ten moduł jest zawarty jako pakiet o nazwieorg.opencv.videoio.
calib3d
Moduł ten zawiera algorytmy dotyczące podstawowych algorytmów geometrii wielu widoków, kalibracji kamery pojedynczej i stereoskopowej, estymacji pozycji obiektu, korespondencji stereofonicznej oraz elementów rekonstrukcji 3D. W bibliotece Java OpenCV ten moduł jest zawarty jako pakiet o nazwieorg.opencv.calib3d.
features2d
Ten moduł zawiera koncepcje wykrywania i opisu cech. W bibliotece Java OpenCV ten moduł jest zawarty w pakiecie o nazwieorg.opencv.features2d.
Objdetect
Ten moduł obejmuje wykrywanie obiektów i instancji predefiniowanych klas, takich jak twarze, oczy, kubki, ludzie, samochody itp. W bibliotece Java OpenCV moduł ten jest zawarty w pakiecie o nazwie org.opencv.objdetect.
Highgui
Jest to łatwy w użyciu interfejs z prostymi funkcjami interfejsu użytkownika. W bibliotece Java OpenCV funkcje tego modułu są zawarte w dwóch różnych pakietach, a mianowicie:org.opencv.imgcodecs i org.opencv.videoio.
Krótka historia OpenCV
OpenCV był początkowo inicjatywą badawczą firmy Intel mającą na celu doradzanie aplikacjom intensywnie wykorzystującym procesor. Został oficjalnie uruchomiony w 1999 roku.
- W roku 2006 została wydana jego pierwsza główna wersja, OpenCV 1.0.
- W październiku 2009 została wydana druga główna wersja, OpenCV 2.
- W sierpniu 2012 r. OpenCV został przejęty przez organizację non-profit OpenCV.org.