OpenCV

**OpenCV** (inglise *Open Source Computer Vision*) on avatud lähtekoodiga arvutinägemise ja masinõppimise tarkvara teek. OpenCV loodi eesmärgiga luua ühine infrastruktuur arvutinägemise rakendustele ja masintaju kiirendamiseks kaubanduses.

## Ajalugu

OpenCV loomist alustas Intelis Gary Bradski 1999. aastal. Eesmärgiks oli luua võimsamaid arvuteid, mis kasutaks arvutinägemise tehnoloogiat. Vadim Pisarevsky ühines Bradskiga, et juhtida Vene Inteli OpenCV tarkvara meeskonda. Aja jooksul vahetas OpenCV meeskond ettevõtteid ja uurimisvaldkondi. Mitmed meeskonnaliikmed suundusid tööle robootika valdkonnas tegutsevatesse firmadesse.

Esimene alphaversioon OpenCV-st toodi avalikkuse ette konverentsil "IEEE Conference on Computer Vision and Pattern Recognition in 2000". Pärast seda, aastatel 2001 ja 2005, anti välja viis beetaversiooni. Versioon 1.0 lasti välja 19. oktoobril 2006 ja 2008. aasta keskpaigas saavutati korporatiivne toetus Willow Garage'ilt, mis lükkas hoo sisse aktiivsele tarkvaraarendusele. 1.1 versiooni tutvustusväljalase avalikustati juba 2008. aasta oktoobris.

Teine suurim uuendus toimus 1. oktoobril 2009, kui mindi üle OpenCV versioonile 2.0. Uuendused, mis sellega kaasnesid olid C++ rakendusliides, uued funktsioonid ja soorituse kiirus tõus programmis. Praegused ametlikud väljalasked ilmuvad iga kuue kuu tagant ja arendamine toimub Vene meeskonna poolt, keda toetavad erinevad äriettevõtted.

2012. augustil OpenCV toetamise võttis üle mittetulundusühing OpenCV.org, mis on ka nende ametlikuks veebileheks.

## Kasutusvaldkonnad

OpenCV-d rakendatakse valdkondades:
*2Ds ja 3Ds
*kaameras liikumise kalkuleerimiseks (inglise *Motion Estimation of a camera system (a.k.a. Ego-Motion estimation)*)
*näotuvastuses ehk programm püüab aru saada, kas tegemist on näoga
*viipetuvastuses ehk programm üritab saada aru, mis viibetega on tegu
*inimese ja arvuti vahelises suhtluses ehk programm üritab aru saada, mida inimene püüab edasi anda arvutile
*liikuvas robotis, liikumise kalkuleerimiseks ja objektide tuvastamiseks
*liikumise tuvastuses, jälgib, kas liikumist toimub või mitte
*objekti äratundmises, mis objekt ja kui kaugel objekt asub
*segmenteerimisest ja tuvastuses
*SfM (inglise *Structure from motion*)
*liikumise jälgimises
*liitreaalsuses, loob ruumi läbi programmi nähtavaid objekte, mis justkui oleksid päris

Toetamaks neid valdkondi, sisaldab OpenCV ka statistilist masinõppimise teeki, kuhu kuuluvad:
*otsustuspuu põhjal õppimine
*k-lähima naabri meetod
*Bayesi võrgud
*tehisnärvivõrk
*juhumets
*tugivektorarvutid

## Programmeerimiskeel

OpenCV on kirjutatud C++ programmeerimiskeeles ja selle peamine liidestus ongi C++-le. Teeki on võimalik kasutada ka Pythoni, Java ja MATLAB/OCTAVE programmeerimiskeeltes, lisaks on teegi kasutamiseks mähikud (*wrappers*) näiteks keeltes C#, Perl, Ch, Haskell ja Ruby. Rakendusliides on kirjeldatud projekti dokumentatsioonis.

OpenCV-d arendatakse C++-is, teegi funktsionaalsus ja algoritmid uuenevad esmajärgus C++-i originaalteegis.

## Operatsioonisüsteem

OpenCV töötab mitmel platvormil. Lauaarvutitel: Windows, Linux, OS X, FreeBSD, OpenBSD. Mobiilil: Android, iOS, Maemo, BlackBerry 10. Kasutajal on võimalus saada ametlikud väljalasked SourceForge'ist või GitHubist. OpenCV kasutab CMake'i tarkvara.

## Viited

## Välislingid
*  Learning OpenCV: Computer Vision with the OpenCV Library
*http://opencv.org/downloads.html