OpenCV
{{Short description|Computer vision library}}
{{Primary sources|date=November 2012}}
{{Infobox software
| title =
| name = OpenCV
| logo = OpenCV logo black.svg
| logo size = 180px
| logo alt =
| logo caption =
| screenshot =
| screenshot size =
| screenshot alt =
| caption =
| collapsible =
| author = Intel, Willow Garage, Itseez
| developer =
| released = {{Start date and age|2000|06|df=yes}}
| discontinued =
| latest release version = {{wikidata|property|preferred|references|edit|P348|P548=Q2804309}} | latest release date = {{Start date and age|{{wikidata|qualifier|preferred|single|P348|P548=Q2804309|P577}}|df=yes}}
| latest preview version =
| latest preview date =
| programming language = C, C++, Python, Java, assembly language
| operating system = Cross-platform: Windows, Linux, macOS, FreeBSD, NetBSD, OpenBSD; Android, iOS, Maemo, BlackBerry 10
| size = ~200 MB
| language = English
| language count =
| language footnote =
| genre = Library
| license = Apache
| alexa =
| website = {{URL|opencv.org}}, {{URL|opencv.ai}}
| standard =
| AsOf =
}}
OpenCV (Open Source Computer Vision Library) is a library of programming functions mainly for real-time computer vision.{{cite journal |last1=Pulli |first1=Kari |last2=Baksheev |first2=Anatoly |last3=Kornyakov |first3=Kirill |last4=Eruhimov |first4=Victor |date=1 April 2012 |title=Realtime Computer Vision with OpenCV |url=http://dl.acm.org/citation.cfm?id=2206309 |journal=Queue |pages=40:40–40:56 |doi=10.1145/2181796.2206309 |volume=10 |issue=4 |doi-access=free}} Originally developed by Intel, it was later supported by Willow Garage, then Itseez (which was later acquired by IntelIntel acquires Itseez: https://opencv.org/blog/intel-acquires-itseez/ {{Webarchive|url=https://web.archive.org/web/20240610111553/https://opencv.org/blog/intel-acquires-itseez/ |date=2024-06-10 }}). The library is cross-platform and licensed as free and open-source software under Apache License 2. Starting in 2011, OpenCV features GPU acceleration for real-time operations.{{Cite web |title=CUDA |url=https://opencv.org/platforms/cuda/ |access-date=2020-10-15 |website=opencv.org}}
History
Officially launched in 1999, the OpenCV project was initially an Intel Research initiative to advance CPU-intensive applications, part of a series of projects including real-time ray tracing and 3D display walls.{{cite book|author1=Adrian Kaehler|author2=Gary Bradski|title=Learning OpenCV 3: Computer Vision in C++ with the OpenCV Library|url=https://books.google.com/books?id=SKy3DQAAQBAJ&pg=PT26|date=14 December 2016|publisher=O'Reilly Media|isbn=978-1-4919-3800-3|pages=26ff}} The main contributors to the project included a number of optimization experts in Intel Russia, as well as Intel's Performance Library Team. In the early days of OpenCV, the goals of the project were described{{cite book|last1=Bradski|first1=Gary|last2=Kaehler|first2=Adrian|title=Learning OpenCV: Computer vision with the OpenCV library|publisher=O'Reilly Media, Inc.|date=2008|pages=6}} as:
- Advance vision research by providing not only open but also optimized code for basic vision infrastructure. No more reinventing the wheel.
- Disseminate vision knowledge by providing a common infrastructure that developers could build on, so that code would be more readily readable and transferable.
- Advance vision-based commercial applications by making portable, performance-optimized code available for free – with a license that did not require code to be open or free itself.
The first alpha version of OpenCV was released to the public at the IEEE Conference on Computer Vision and Pattern Recognition in 2000, and five betas were released between 2001 and 2005. The first 1.0 version was released in 2006. A version 1.1 "pre-release" was released in October 2008.
The second major release of the OpenCV was in October 2009. OpenCV 2 includes major changes to the C++ interface, aiming at easier, more type-safe patterns, new functions, and better implementations for existing ones in terms of performance (especially on multi-core systems). Official releases now occur every six monthsOpenCV change logs: http://code.opencv.org/projects/opencv/wiki/ChangeLog {{Webarchive|url=https://web.archive.org/web/20130115212624/http://code.opencv.org/projects/opencv/wiki/ChangeLog |date=2013-01-15}} and development is now done by an independent Russian team supported by commercial corporations.
In August 2012, support for OpenCV was taken over by a non-profit foundation, OpenCV.org, which maintains a developerOpenCV Developer Site: http://code.opencv.org {{Webarchive|url=https://archive.today/20130113084234/http://code.opencv.org/ |date=2013-01-13}} and user site.OpenCV User Site: http://opencv.org/
In May 2016, Intel signed an agreement to acquire Itseez,{{Cite news|url=https://newsroom.intel.com/editorials/intel-acquires-computer-vision-for-iot-automotive/|title=Intel Acquires Computer Vision for IOT, Automotive {{!}} Intel Newsroom|work=Intel Newsroom|access-date=2018-11-26|language=en-US}} a leading developer of OpenCV.{{Cite news|url=http://www.ewdn.com/2016/05/31/intel-acquires-russian-computer-vision-company-itseez/|title=Intel acquires Russian computer vision company Itseez|date=2016-05-31|work=East-West Digital News|access-date=2018-11-26|language=en-US}}
In July 2020, OpenCV announced and began a Kickstarter campaign for the [https://opencv.org/introducing-oak-spatial-ai-powered-by-opencv/ OpenCV AI Kit], a series of hardware modules and additions to OpenCV supporting Spatial AI.
In August 2020, OpenCV launched [https://www.opencv.ai/ OpenCV.ai] – the professional consulting arm. The team of developers provides consulting services and delivers Computer Vision, Machine Learning, and Artificial intelligence solutions. OpenCV Consulting Site: http://opencv.ai/
Applications
File:OfxOpenCV.png running the OpenCV add-on example]]
OpenCV's application areas include:
- 2D and 3D feature toolkits
- Egomotion estimation
- Facial recognition system
- Gesture recognition
- Human–computer interaction (HCI)
- Mobile robotics
- Motion understanding
- Object detection
- Segmentation and recognition
- Stereopsis stereo vision: depth perception from 2 cameras
- Structure from motion (SFM)
- Motion video tracking
- Augmented reality
To support some of the above areas, OpenCV includes a statistical machine learning library that contains:
- Boosting
- Decision tree learning
- Gradient boosting trees
- Expectation-maximization algorithm
- k-nearest neighbor algorithm
- Naive Bayes classifier
- Artificial neural networks
- Random forest
- Support vector machine (SVM)
- Deep neural networks (DNN)OpenCV: http://opencv.org/opencv-3-3.html {{Webarchive|url=https://web.archive.org/web/20190214174857/https://opencv.org/opencv-3-3.html |date=2019-02-14 }}
Programming language
OpenCV is written in the programming language C++, as is its primary interface, but it still retains a less comprehensive though extensive older C interface. All newer developments and algorithms appear in the C++ interface. There are language bindings in Python, Java, and MATLAB/Octave. The application programming interface (API) for these interfaces can be found in the online documentation.OpenCV C interface: http://docs.opencv.org Wrapper libraries in several languages have been developed to encourage adoption by a wider audience. In version 3.4, JavaScript bindings for a selected subset of OpenCV functions were released as OpenCV.js, to be used for web platforms.[https://docs.opencv.org/3.4.0/df/d0a/tutorial_js_intro.html Introduction to OpenCV.js and Tutorials]
Hardware acceleration
If the library finds Intel's Integrated Performance Primitives on the system, it will use these proprietary optimized routines to accelerate itself.
A Compute Unified Device Architecture (CUDA) based graphics processing unit (GPU) interface has been in progress since September 2010.{{Cite web |url=http://opencv.org/platforms/cuda.html |url-status=dead |title=Cuda GPU port |archive-url=https://web.archive.org/web/20160521200940/http://opencv.org/platforms/cuda.html |archive-date=2016-05-21}}
An OpenCL-based GPU interface has been in progress since October 2012,OpenCL Announcement: http://opencv.org/opencv-v2-4-3rc-is-under-way.html {{Webarchive|url=https://web.archive.org/web/20190217030256/https://opencv.org/opencv-v2-4-3rc-is-under-way.html |date=2019-02-17 }} documentation for version 2.4.13.3 can be found at docs.opencv.org.OpenCL-accelerated Computer Vision API Reference: http://docs.opencv.org/modules/ocl/doc/ocl.html
An IPU may also utilise OpenCV hardware acceleration.
Operating system support
OpenCV runs on the desktop operating systems: Windows, Linux, macOS, FreeBSD, NetBSD and OpenBSD as well as mobile operating systems: Android, iOS, Maemo,{{Cite web |url=https://garage.maemo.org/projects/opencv |title=Port of Intel's Open Source Computer Vision Library (OpenCV) to Maemo |date=10 August 2011 |website=Maemo Garage |access-date=2023-01-30}} BlackBerry 10 and QNX.{{Cite web |url=https://github.com/blackberry/OpenCV |title=Blackberry Port of OpenCV [partial] |author=hungc |date=4 September 2019 |website=GitHub}} The user can get official releases from SourceForge or take the latest sources from GitHub.{{Cite web |url=https://github.com/Itseez/opencv |title=opencv/Opencv: Open Source Computer Vision Library |website=GitHub |date=21 May 2020}} OpenCV uses CMake.
See also
{{Portal|Free and open-source software}}
- AForge.NET – computer vision library for the Common Language Runtime of .NET Framework and Mono
- Robot Operating System (ROS) – uses OpenCV as main vision package
- VXL – alternative library written in C++
- CVIPtools – complete graphical user interface (GUI) based computer-vision and image-processing software environment, with C function libraries, a Component Object Model (COM) based dynamic-link library (DLL), and two utility programs for algorithm development and batch processing
- OpenNN – artificial neural network library written in C++, open-source
- List of free and open-source software packages