Offener Lebenslauf - OpenCV
Originalautor(en) | Intel Corporation , Willow Garage , Itseez |
---|---|
Erstveröffentlichung | Juni 2000 |
Stabile Version | 4.5.4 / 9. Oktober 2021
|
Repository | |
Geschrieben in | C / C++ |
Betriebssystem | Plattformübergreifend |
Größe | ~200 MB |
Typ | Bücherei |
Lizenz | Apache-Lizenz |
Webseite | opencv |
OpenCV ( Open Source Computer Vision Library ) ist eine Bibliothek mit Programmierfunktionen, die hauptsächlich auf Echtzeit- Computer Vision ausgerichtet sind . Ursprünglich von Intel entwickelt , wurde es später von Willow Garage und dann von Itseez (das später von Intel übernommen wurde) unterstützt. Die Bibliothek ist plattformübergreifend und kann unter der Open-Source- Apache-2-Lizenz kostenlos verwendet werden . Ab 2011 bietet OpenCV GPU-Beschleunigung für Echtzeitvorgänge.
Geschichte
Das 1999 offiziell ins Leben gerufene OpenCV-Projekt war ursprünglich eine Initiative von Intel Research zur Weiterentwicklung CPU- intensiver Anwendungen, Teil einer Reihe von Projekten, darunter Echtzeit- Raytracing und 3D-Anzeigewände . Zu den wichtigsten Beiträgen zu dem Projekt gehörten eine Reihe von Optimierungsexperten von Intel Russland sowie das Performance Library Team von Intel. In den frühen Tagen von OpenCV wurden die Ziele des Projekts wie folgt beschrieben:
- Bringen Sie die Vision-Forschung voran, indem Sie nicht nur offenen, sondern auch optimierten Code für die grundlegende Vision-Infrastruktur bereitstellen . Das Rad muss nicht mehr neu erfunden werden .
- Verbreiten Sie Vision-Wissen, indem Sie eine gemeinsame Infrastruktur bereitstellen, auf der Entwickler aufbauen können, damit Code leichter lesbar und übertragbar ist.
- Erweitern Sie visionsbasierte kommerzielle Anwendungen, indem Sie portablen , leistungsoptimierten Code kostenlos zur Verfügung stellen – mit einer Lizenz, die nicht erfordert, dass der Code selbst geöffnet oder frei ist.
Die erste Alpha-Version von OpenCV wurde auf der IEEE Conference on Computer Vision and Pattern Recognition im Jahr 2000 der Öffentlichkeit zugänglich gemacht , und zwischen 2001 und 2005 wurden fünf Betas veröffentlicht. Die erste 1.0-Version wurde 2006 veröffentlicht. Eine Version 1.1 "Pre-Release" “ wurde im Oktober 2008 veröffentlicht.
Die zweite große Version von OpenCV war im Oktober 2009. OpenCV 2 enthält wesentliche Änderungen an der C++- Schnittstelle, die auf einfachere, typsicherere Muster, neue Funktionen und bessere Implementierungen für bestehende Muster in Bezug auf die Leistung abzielen (insbesondere auf Multi- Kernsysteme). Offizielle Veröffentlichungen erfolgen jetzt alle sechs Monate und die Entwicklung wird jetzt von einem unabhängigen russischen Team durchgeführt, das von kommerziellen Unternehmen unterstützt wird.
Im August 2012 wurde der Support für OpenCV von einer gemeinnützigen Stiftung OpenCV.org übernommen, die eine Entwickler- und Benutzerseite unterhält.
Im Mai 2016 unterzeichnete Intel eine Vereinbarung zur Übernahme von Itseez, einem führenden Entwickler von OpenCV.
Im Juli 2020 kündigte und startete OpenCV eine Kickstarter-Kampagne für das OpenCV AI Kit , eine Reihe von Hardwaremodulen und Ergänzungen zu OpenCV, die Spatial AI unterstützen.
Anwendungen
Die Anwendungsbereiche von OpenCV umfassen:
- 2D- und 3D-Feature-Toolkits
- Egomotion- Schätzung
- Gesichtserkennungssystem
- Gestenerkennung
- Mensch-Computer-Interaktion (HCI)
- Mobile Robotik
- Bewegungsverständnis
- Objekterkennung
- Segmentierung und Erkennung
- Stereopsis Stereo Vision: Tiefenwahrnehmung von 2 Kameras
- Struktur aus Bewegung (SFM)
- Bewegungsverfolgung
- Erweiterte Realität
Um einige der oben genannten Bereiche zu unterstützen, enthält OpenCV eine statistische Bibliothek für maschinelles Lernen , die Folgendes enthält:
- Erhöhen
- Entscheidungsbaum lernen
- Gradientenverstärkende Bäume
- Erwartungsmaximierungsalgorithmus
- k-nächster Nachbar-Algorithmus
- Naive Bayes-Klassifikator
- Künstliche neurale Netzwerke
- Zufälliger Wald
- Support-Vektor-Maschine (SVM)
- Tiefe neuronale Netze (DNN)
Programmiersprache
OpenCV ist in C++ geschrieben und seine primäre Schnittstelle ist in C++, aber es behält immer noch eine weniger umfassende, aber umfangreiche ältere C-Schnittstelle bei . Alle neuen Entwicklungen und Algorithmen erscheinen in der C++-Oberfläche. Es gibt Bindungen in Python , Java und MATLAB / OCTAVE . Die API für diese Schnittstellen finden Sie in der Online-Dokumentation. Wrapper in mehreren Programmiersprachen wurden entwickelt, um die Akzeptanz durch ein breiteres Publikum zu fördern. In Version 3.4 wurden JavaScript- Bindungen für eine ausgewählte Teilmenge von OpenCV-Funktionen als OpenCV.js veröffentlicht, um für Webplattformen verwendet zu werden.
Hardware-Beschleunigung
Wenn die Bibliothek Intels Integrated Performance Primitives auf dem System findet, verwendet sie diese proprietären optimierten Routinen, um sich selbst zu beschleunigen.
Seit September 2010 ist eine CUDA- basierte GPU- Schnittstelle in Arbeit.
Seit Oktober 2012 ist eine OpenCL- basierte GPU- Schnittstelle in Arbeit, die Dokumentation zur Version 2.4.13.3 findet sich unter docs.opencv.org.
Betriebssystemunterstützung
OpenCV läuft auf den folgenden Desktop-Betriebssystemen: Windows , Linux , macOS , FreeBSD , NetBSD , OpenBSD . OpenCV läuft auf folgenden mobilen Betriebssystemen: Android , iOS , Maemo , BlackBerry 10 . Der Benutzer kann offizielle Releases von SourceForge abrufen oder die neuesten Quellen von GitHub verwenden . OpenCV verwendet CMake .
Siehe auch
- AForge.NET , eine Computer Vision-Bibliothek für die Common Language Runtime ( .NET Framework und Mono ).
- ROS (Roboter-Betriebssystem) . OpenCV wird als primäres Vision-Paket in ROS verwendet.
- VXL , eine alternative in C++ geschriebene Bibliothek.
- CVIPtools , eine vollständige GUI-basierte Computer- Vision- und Bildverarbeitungs-Softwareumgebung mit C-Funktionsbibliotheken, einer COM-basierten DLL sowie zwei Dienstprogrammen für die Algorithmusentwicklung und Stapelverarbeitung.
- OpenNN , eine in C++ geschriebene Open-Source- Bibliothek für neuronale Netze .
- Liste der kostenlosen und Open-Source-Softwarepakete