OpenCV
OpenCV | |
Autor inițial | Intel Corporation, Willow Garage, Itseez |
---|---|
Versiune inițială | iunie 2000 |
Ultima versiune | 4.0.1 (decembrie 22, 2018 | )
Repo | github.com/opencv/opencv |
Scris în | C/C++ |
Sistem de operare | Cross-platform |
Mărime | ~200 MB |
Tip | Bibliotecă |
Licență | Licența BSD |
Prezență online | |
opencv.org | |
Modifică date / text |
OpenCV (Vedere computerizată cu sursa deschisă) este o bibliotecă de funcții informatice specializată pe vedere computerizată în timp-real.[1] Elaborată inițial de Intel,[2] a fost dezvoltată ulterior de Willow Garage, apoi de Itseez (care a fost achiziționată mai târziu de Intel[3]). 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.[4]
Istorie
modificareLansat 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.[5] 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 [6] 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 luni[7] 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,[8] un dezvoltator OpenCV avansat.[9]
Aplicații
modificareOpenCV 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)[10]
Limbaje de programare
modificareOpenCV 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.[11] Pentru a încuraja adoptarea de o mai mare audiență au fost dezvoltate și anvelope în C#, Perl,[12] Ch,[13] Haskell,[14] și Ruby.
Noile dezvoltări și algoritmii în OpenCV se realizează acum pentru interfața C++.
Accelerare hardware
modificareDacă 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.[15]
O interfață GPU bazată pe OpenCL este în dezvoltare din octombrie 2012,[16] iar documentația pentru versiunea 2.4.13.3 se poate găsi la docs.opencv.org.[17]
Suport pentru sisteme de operare
modificareOpenCV 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,[18] BlackBerry 10.[19] Utilizatorii pot prelua versiunea oficială din SourceForge sau ultimele coduri sursă din GitHub.[20] OpenCV utilizează CMake.
Vezi și
modificare- 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
modificare- ro Stoean, Catalin. „Procesarea Imaginilor - Laborator 1: Introducere în utilizarea bibliotecii OpenCV” (PDF). Universitatea Tehnică din Cluj-Napoca.
- ro Danescu, Radu Gabriel. „Computer Vision” (PDF). Universitatea din Craiova, Facultatea de Stiinte Exacte - Matematica și Informatică.
- ro Păuleț, Claudia. „Recunoașterea fețelor, lucrare de licență, 2012” (PDF). Universitatea Ioan Cuza din Iași. Arhivat din original (PDF) la . Accesat în .
Referințe
modificare- ^ en Pulli, Kari; Baksheev, Anatoly; Kornyakov, Kirill; Eruhimov, Victor (). „Vedere computerizată în timp-real cu OpenCV”. Queue. pp. 40:40–40:56. doi:10.1145/2181796.2206309.
- ^ en Taheri, Sajjad (). „Vedere computerizată în masă: vederea computerizată pentru platforma Open Web”. eeTimes. Accesat în .
- ^ en Intel achiziționează Itseez: https://opencv.org/intel-acquires-itseez.html Arhivat în , la Wayback Machine.
- ^ en https://github.com/opencv/opencv/wiki/Învățare profundă în OpenCV
- ^ en Adrian Kaehler; Gary Bradski (). Să învățăm OpenCV 3: Vedere computerizată în C++ cu biblioteca OpenCV. O'Reilly Media. pp. 26ff. ISBN 978-1-4919-3800-3.
- ^ en Bradski, Gary; Kaehler, Adrian (). Să învățăm OpenCV: Vedere computerizată cu biblioteca OpenCV. O'Reilly Media, Inc. p. 6.
- ^ en Jurnal de modificări OpenCV: http://code.opencv.org/projects/opencv/wiki/ChangeLog Arhivat în , la Wayback Machine.
- ^ en „Intel achiziționează Vederea Computerizată pentru IOT, Auto | Intel Newsroom”. Intel Newsroom (în engleză). Accesat în .
- ^ en „Intel achiziționează compania rusă de vedere computerizată Itseez”. East-West Digital News (în engleză). . Accesat în .
- ^ en OpenCV: http://opencv.org/opencv-3-3.html Arhivat în , la Wayback Machine.
- ^ en Interfața C OpenCV: http://docs.opencv.org
- ^ en CPAN: http://search.cpan.org/~yuta/Cv-0.29/ Arhivat în , la Wayback Machine.
- ^ en OpenCV în Ch: http://www.softintegration.com/products/thirdparty/opencv/
- ^ Proiectul haskell-opencv în Github: https://github.com/LumiGuide/haskell-opencv
- ^ en Portare pentru Cuda GPU: http://opencv.org/platforms/cuda.html Arhivat în , la Wayback Machine.
- ^ en Anunțul pentru OpenCL: http://opencv.org/opencv-v2-4-3rc-is-under-way.html Arhivat în , la Wayback Machine.
- ^ en Referința API pentru vedere computerizată OpenCL: http://docs.opencv.org/modules/ocl/doc/ocl.html
- ^ en Portarea Maemo: https://garage.maemo.org/projects/opencv Arhivat în , la Wayback Machine.
- ^ BlackBerry 10 (portare parțială): https://github.com/blackberry/OpenCV
- ^ en https://github.com/Itseez/opencv