OpenCV (Vedere computerizată cu sursa deschisă) este o bibliotecă de funcții informatice specializată pe vedere computerizată în timp-real. Elaborată inițial de Intel, a fost dezvoltată ulterior de Willow Garage, apoi de Itseez (care a fost achiziționată mai târziu de IntelIntel achiziționează Itseez: https://opencv.org/intel-acquires-itseez.html ). Biblioteca este de tip multiplatformă și este gratuită pentru utilizare sub licența BSD pentru sursă deschisă.
OpenCV suportă ansamblurile software de învățare profundă TensorFlow, Torch/ PyTorch și Caffe.https://github.com/opencv/opencv/wiki/Învățare profundă în OpenCV
Istorie Lansat oficial în anul 1999, proiectul OpenCV a fost inițial o inițiativă a departamentului Intel Cercetare pentru dezvoltarea aplicațiilor intensive-numeric, făcând parte dintr-o serie de proiecte printre care și urmărirea razelor în timp-real și pereții cu ecran 3D. Printre principalii contribuitori ai proiectului au fost și câțiva experți în optimizare de la Intel Rusia, precum și echipa Intel Performance Library. La începuturile OpenCV, scopurile proiectului erau descrise astfel: Cercetarea avansată a vederii prin asigurarea nu doar de cod sursă deschis ci și optimizat pentru infrastructura de bază a vederii. Fără a reinventa roata. Promovarea cunoștințelor despre vedere prin asigurarea unei infrastructuri comune pentru programatori, astfel ca codul sursă să fie mai inteligibil și transferabil. Avansarea de aplicații comerciale bazate pe vedere prin furnizarea gratuită de cod sursă portabil și optimizat – cu o licență care nu solicită ca codul în sine să fie deschis sau gratuit.
Prima versiune alfa a OpenCV a fost lansată public la Conferința IEEE despre Vederea Computerizată și Recunoașterea Modelului din anul 2000, iar cinci versiuni beta au fost lansate între anii 2001 și 2005. Prima versiune 1.0 a fost lansată în anul 2006. O versiune 1.1 „pre-lansare” a fost lansată în luna octombrie 2008.
A doua lansare majoră a OpenCV a avut loc în octombrie 2009. OpenCV 2 include modificări majore ale interfeței C++, țintind modele mai ușoare, cu tipuri mai stabile, funcții noi, și implementări mai bune ale celor existente, în sensul performanței (în special pentru sistemele multi-nucleu). Acum au loc lansări oficiale chiar și la perioade de șase luniJurnal de modificări OpenCV: http://code.opencv.org/projects/opencv/wiki/ChangeLog iar dezvoltarea este realizată de o echipă rusă independentă sprijinită de corporații comerciale.
În luna mai 2016, Intel a semnat un acord de preluare a Itseez, un dezvoltator OpenCV avansat.
Aplicații
OpenCV este aplicat în:
Instrumente pentru detalii 2D și 3D Estimarea ego-mișcării Sisteme de recunoaștere facială Recunoașterea gesturilor Interacțiune om-calculator (abr. en. HCI) Roboți mobili Înțelegerea mișcării Identificarea obiectelor Segmentarea și recunoașterea imaginilor Vederea stereoscopică: percepția adâncimii cu 2 camere video Structură din mișcare (abr. en. SFM) Urmărirea mișcării Realitate augmentată
Pentru a sprijini cele de mai sus, OpenCV include o bibliotecă statistică de învățare automată care conține:
Accelerare (boosting) Învățare cu arbore de decizii Arbori accelerator gradient Algoritm de maximizare a așteptării Algoritmul vecinilor cei mai apropiați-de-k Clasificator Bayes naiv Rețele neurale artificiale Pădure de arbori decizionali Mașini cu vector-suport (abr. en. SVM) Rețele neurale profunde (abr. en. DNN)OpenCV: http://opencv.org/opencv-3-3.html
Limbaje de programare OpenCV este scris în limbajul C++ și are interfața principală în C++, dar păstrează și o interfață C veche mai puțin dezvoltată, deși extinsă. Există translații în Python, Java și MATLAB/ OCTAVE. Interfețele de programare (abr. en. API) pentru acestea se pot găsi în documentația din internet.Interfața C OpenCV: http://docs.opencv.org Pentru a încuraja adoptarea de o mai mare audiență au fost dezvoltate și anvelope în C#, Perl,CPAN: http://search.cpan.org/~yuta/Cv-0.29/ Ch,OpenCV în Ch: http://www.softintegration.com/products/thirdparty/opencv/ Haskell,Proiectul haskell-opencv în Github: https://github.com/LumiGuide/haskell-opencv și Ruby.
Noile dezvoltări și algoritmii în OpenCV se realizează acum pentru interfața C++.
Accelerare hardware
Dacă biblioteca găsește Primitivele Integrate de Performanță (abr. en. IPP) ale Intel în sistem, va utiliza aceste rutine specifice optimizate pentru a se accelera.
O interfață GPU bazată pe CUDA este dezvoltată începând din septembrie 2010.Portare pentru Cuda GPU: http://opencv.org/platforms/cuda.html
O interfață GPU bazată pe OpenCL este în dezvoltare din octombrie 2012,Anunțul pentru OpenCL: http://opencv.org/opencv-v2-4-3rc-is-under-way.html iar documentația pentru versiunea 2.4.13.3 se poate găsi la docs.opencv.org.Referința API pentru vedere computerizată OpenCL: http://docs.opencv.org/modules/ocl/doc/ocl.html
Suport pentru sisteme de operare OpenCV rulează pe următoarele sisteme de operare desktop: Windows, Linux, macOS, FreeBSD, NetBSD, OpenBSD.
OpenCV rulează pe următoarele sisteme de operare mobile: Android, iOS, Maemo,Portarea Maemo: https://garage.maemo.org/projects/opencv BlackBerry 10.BlackBerry 10 (portare parțială): https://github.com/blackberry/OpenCV Utilizatorii pot prelua versiunea oficială din SourceForge sau ultimele coduri sursă din GitHub.https://github.com/Itseez/opencv OpenCV utilizează CMake.
Vezi și
AForge.NET, o bibliotecă de vedere computerizată pentru CLR (Ansamblul .NET și Mono). ROS (Sistem de operare roboți). OpenCV este utilizat pentru vedere în ROS. VXL, o bibliotecă alternativă scrisă în C++. Integrating Vision Toolkit (IVT), o bibliotecă C++ rapidă și ușor de folosit cu intefață OpenCV opțională. CVIPtools, un mediu de programare complet pentru vedere computerizată și procesare de imagine, cu biblioteci de funcții C și o bibliotecă dinamică DLL pe baza modelului de componente COM. OpenNN, o bibliotecă cu sursa deschisă pentru rețele neurale scrisă în C++.
Bibliografie
Referințe
Categorie:Biblioteci C++ Categorie:Informatică