OpenCV

**OpenCV** (Open Source Computer Vision Library) je multiplatformová open-source knižnica, ktorá obsahuje algoritmy zamerané na počítačové videnie. Knižnica obsahuje viac ako 2500 optimalizovaných algoritmov. Obsahuje klasické ale aj najmodernejšie riešenia problémov z oblasti počítačového videnia a strojového učenia. Tieto algoritmy môžu byť použité na rozpoznanie tvárí, klasifikáciu ľudského správania a sledovanie pohybu vo videách, extrakciu 3D modelov objektov, spájanie obrázkov na tvorbu vysoko kvalitných obrazov celej scény, hľadanie podobných obrázkov v databáze, odstránenie efektu červených očí pri použití blesku, sledovanie pohybu očí a rozpoznanie scenérie atď. Knižnica je široko používaná vo výskumných skupinách, firmách a štátnych podnikoch. Počet stiahnutí tejto knižnice prekračuje 18 miliónov. OpenCV je napísaná v jazyku C++, ale je možné použiť ju aj v jazykoch Python, Java a MATLAB.

## História
Knižnica OpenCV bola vytvorená spoločnosťou Intel. Vývoj začal v 1998 a prvé verejné vydanie bolo v roku 2000. Intel ešte aj dnes podporuje ďalší vývoj tento knižnice.

* v roku 2006 bola vydaná prvá oficiálna verzia OpenCV 1.0 – implementovaná bola v C a obsahovala rôzne algoritmy na spracovanie obrazu, výpočtovú geometriu, detekciu tvárí, kalibráciu kamery atď., a niektoré klasické metódy zo strojového učenia ako napr. rozhodovacie stromy, SVM, viacvrstvové perceptrony atď.
* v roku 2009 bola vydaná verzia OpenCV 2.0 – C++ sa stal hlavným hlavným jazykom knižnice.

## Moduly
OpenCV má modulárnu štruktúru čo znamená, že balíček obsahuje niekoľko zdieľaných alebo statických knižníc. Hlavné moduly sú:

* Core functionality (core) – modul definujúci základné dátové štruktúry a funkcie, ktoré sú používané ostatnými modulmi.
* Image Processing (imgproc) – modul na spracovanie obrázkov. Obsahuje lineárne a nelineárne filtrovanie, geometrické transformácie, konverziu farebných priestorov, histogramy atď.
* Video Analysis (video) – modul na spracovanie videí, ktorý obsahuje algoritmy na odhad pohybu, extrakciu pozadia a sledovanie objektov.
* Camera Calibration and 3D Reconstruction (calib3d) – kalibrácia kamery, odhad polohy objektu, 3D rekonštrukcia.
* 2D Features Framework (features2d) – detektory charakteristických čŕt, deskriptory.
* Object Detection (objdetect) – detekcia objektov a instancie preddefinovaných tried (napr. tvár, oči, ľudia, autá…)
* High-level GUI (highgui) – ľahko použiteľné rozhranie na jednoduché UI funkcie.
* Video I/O (videoio) – ľahko použiteľné rozhranie na zaznamenávanie videa a video kodeky
* … a ďalšie

### Programovací jazyk
OpenCV je napísaný v C++, ale stále si zachováva menej komplexné, aj keď rozsiahle staršie rozhranie C. Všetky novinky a algoritmy sa objavujú v rozhraní C++. Väzby existujú v jazykoch Python (napríklad metódy OpenCV cv.line, OpenCV cv2.cvtcolor, OpenCV cv2.circle), Java a MATLAB/OCTAVE. Rozhranie API pre tieto rozhrania nájdete v online dokumentácii.

Obaly v niekoľkých programovacích jazykoch boli vyvinuté s cieľom podporiť prijatie širším publikom. Vo verzii 3.4 boli väzby JavaScript pre vybranú podmnožinu funkcií OpenCV vydané ako OpenCV.js, ktoré sa majú použiť pre webové platformy.

## Referencie

## Externé odkazy
* docs.opencv.org - dokumentácia

Kategória:Grafický softvér
Kategória:Spracovanie obrazu
Kategória:Grafické knižnice