OpenCV



















































OpenCV
OpenCV Logo with text svg version.svg
Original author(s)
Intel Corporation, Willow Garage, Itseez
Initial release June 2000; 18 years ago (2000-06)
Stable release
4.0.1
/ 22 December 2018; 43 days ago (2018-12-22)

Repository
  • github.com/opencv/opencv
Edit this at Wikidata
Written in
C/C++
Operating system Cross-platform
Size ~200 MB
Type Library
License BSD license
Website opencv.org

OpenCV (Open source computer vision) is a library of programming functions mainly aimed at real-time computer vision.[1] Originally developed by Intel,[2] it was later supported by Willow Garage then Itseez (which was later acquired by Intel[3]). The library is cross-platform and free for use under the open-source BSD license.


OpenCV supports the deep learning frameworks TensorFlow, Torch/PyTorch and Caffe.[4]




Contents






  • 1 History


  • 2 Applications


  • 3 Programming language


  • 4 Hardware acceleration


  • 5 OS support


  • 6 See also


  • 7 References





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.[5] 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[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 months[7] 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 developer[8] and user site.[9]


On May 2016, Intel signed an agreement to acquire Itseez,[10] a leading developer of OpenCV.[11]



Applications





openFrameworks 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 identification


  • Segmentation and recognition


  • Stereopsis stereo vision: depth perception from 2 cameras


  • Structure from motion (SFM)

  • Motion 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)[12]



Programming language


OpenCV is written in C++ and its primary interface is in C++, but it still retains a less comprehensive though extensive older C interface. There are bindings in Python, Java and MATLAB/OCTAVE. The API for these interfaces can be found in the online documentation.[13] Wrappers in other languages such as C#, Perl,[14]Ch,[15]Haskell,[16] and Ruby have been developed to encourage adoption by a wider audience.


All of the new developments and algorithms in OpenCV are now developed in the C++ interface.



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 CUDA-based GPU interface has been in progress since September 2010.[17]


An OpenCL-based GPU interface has been in progress since October 2012,[18] documentation for version 2.4.13.3 can be found at docs.opencv.org.[19]



OS support


OpenCV runs on the following desktop operating systems: Windows, Linux, macOS, FreeBSD, NetBSD, OpenBSD. OpenCV runs on the following mobile operating systems: Android, iOS, Maemo,[20]BlackBerry 10.[21] The user can get official releases from SourceForge or take the latest sources from GitHub.[22] OpenCV uses CMake.



See also





  • AForge.NET, a computer vision library for the Common Language Runtime (.NET Framework and Mono).


  • ROS (Robot Operating System). OpenCV is used as the primary vision package in ROS.


  • VXL, an alternative library written in C++.


  • Integrating Vision Toolkit (IVT), a fast and easy-to-use C++ library with an optional interface to OpenCV.


  • CVIPtools, a complete GUI-based computer-vision and image-processing software environment, with C function libraries, a COM-based DLL, along with two utility programs for algorithm development and batch processing.


  • OpenNN, an open-source neural networks library written in C++.



References





  1. ^ Pulli, Kari; Baksheev, Anatoly; Kornyakov, Kirill; Eruhimov, Victor (1 April 2012). "Realtime Computer Vision with OpenCV". Queue. pp. 40:40–40:56. doi:10.1145/2181796.2206309..mw-parser-output cite.citation{font-style:inherit}.mw-parser-output .citation q{quotes:"""""""'""'"}.mw-parser-output .citation .cs1-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/thumb/6/65/Lock-green.svg/9px-Lock-green.svg.png")no-repeat;background-position:right .1em center}.mw-parser-output .citation .cs1-lock-limited a,.mw-parser-output .citation .cs1-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/thumb/d/d6/Lock-gray-alt-2.svg/9px-Lock-gray-alt-2.svg.png")no-repeat;background-position:right .1em center}.mw-parser-output .citation .cs1-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/thumb/a/aa/Lock-red-alt-2.svg/9px-Lock-red-alt-2.svg.png")no-repeat;background-position:right .1em center}.mw-parser-output .cs1-subscription,.mw-parser-output .cs1-registration{color:#555}.mw-parser-output .cs1-subscription span,.mw-parser-output .cs1-registration span{border-bottom:1px dotted;cursor:help}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Wikisource-logo.svg/12px-Wikisource-logo.svg.png")no-repeat;background-position:right .1em center}.mw-parser-output code.cs1-code{color:inherit;background:inherit;border:inherit;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;font-size:100%}.mw-parser-output .cs1-visible-error{font-size:100%}.mw-parser-output .cs1-maint{display:none;color:#33aa33;margin-left:0.3em}.mw-parser-output .cs1-subscription,.mw-parser-output .cs1-registration,.mw-parser-output .cs1-format{font-size:95%}.mw-parser-output .cs1-kern-left,.mw-parser-output .cs1-kern-wl-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right,.mw-parser-output .cs1-kern-wl-right{padding-right:0.2em}


  2. ^ Taheri, Sajjad (2018-05-31). "Computer Vision for the Masses: Bringing Computer Vision to the Open Web Platform". eeTimes. Retrieved 26 november 2018. Check date values in: |access-date= (help)


  3. ^ Intel acquires Itseez: https://opencv.org/intel-acquires-itseez.html


  4. ^ https://github.com/opencv/opencv/wiki/Deep-Learning-in-OpenCV


  5. ^ Adrian Kaehler; Gary Bradski (14 December 2016). Learning OpenCV 3: Computer Vision in C++ with the OpenCV Library. O'Reilly Media. pp. 26ff. ISBN 978-1-4919-3800-3.


  6. ^ Bradski, Gary; Kaehler, Adrian (2008). Learning OpenCV: Computer vision with the OpenCV library. O'Reilly Media, Inc. p. 6.


  7. ^ OpenCV change logs: http://code.opencv.org/projects/opencv/wiki/ChangeLog


  8. ^ OpenCV Developer Site: http://code.opencv.org


  9. ^ OpenCV User Site: http://opencv.org/


  10. ^ "Intel Acquires Computer Vision for IOT, Automotive | Intel Newsroom". Intel Newsroom. Retrieved 2018-11-26.


  11. ^ "Intel acquires Russian computer vision company Itseez". East-West Digital News. 2016-05-31. Retrieved 2018-11-26.


  12. ^ OpenCV: http://opencv.org/opencv-3-3.html


  13. ^ OpenCV C interface: http://docs.opencv.org


  14. ^ CPAN: http://search.cpan.org/~yuta/Cv-0.29/


  15. ^ Ch OpenCV: http://www.softintegration.com/products/thirdparty/opencv/


  16. ^ The haskell-opencv project on Github: https://github.com/LumiGuide/haskell-opencv


  17. ^ Cuda GPU port: http://opencv.org/platforms/cuda.html


  18. ^ OpenCL Announcement: http://opencv.org/opencv-v2-4-3rc-is-under-way.html


  19. ^ OpenCL-accelerated Computer Vision API Reference: http://docs.opencv.org/modules/ocl/doc/ocl.html


  20. ^ Maemo port: https://garage.maemo.org/projects/opencv


  21. ^ BlackBerry 10 (partial port): https://github.com/blackberry/OpenCV


  22. ^ https://github.com/Itseez/opencv










Comments

Popular posts from this blog

Information security

Volkswagen Group MQB platform

刘萌萌