OpenCV
![]() | Template:Wikify is deprecated. Please use a more specific cleanup template as listed in the documentation. |
Original author(s) | Intel Corporation |
---|---|
Stable release | 2.2
/ December 5, 2010 |
Repository | |
Operating system | Cross-platform |
Type | Library |
License | BSD license |
Website | http://opencv.willowgarage.com/wiki/ |
OpenCV is a library of programming functions mainly aimed at real time computer vision, developed by Intel and now supported by Willow Garage. It is free for use under the open source BSD license. The library is cross-platform. It focuses mainly on real-time image processing. If the library finds Intel's Integrated Performance Primitives on the system, it will use these commercial optimized routines to accelerate itself.
Wiki
The central site for detailed OpenCV information is the OpenCV Wiki [1]. This page contains links to:
- The OpenCV Wiki User Pages
- The OpenCV Book
- User documentation in C++, C and in Python
- Latest Announcements
- The OpenCV User Group
- Submitting Bug Reports
- Download sites for the latest code on SVN or released versions for Linux or Windows
- How to build OpenCV on various Platforms (Mac, Win, Unix, Linux ...)
- Supported cameras for Linux, Mac, and Windows.
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. The main contributors to the project included Intel’s Performance Library Team, as well as a number of optimization experts in Intel Russia. In the early days of OpenCV, the goals of the project were described 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 to be open or free themselves.
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. In mid 2008, OpenCV obtained corporate support from Willow Garage, and is now again under active development. A version 1.1 "pre-release" was released in October 2008, and a book by two authors of OpenCV published by O'Reilly Media went on the market that same month (see Learning OpenCV: Computer Vision with the OpenCV Library[2] ).
The second major release of the OpenCV was on 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).
Applications

OpenCV's application areas include:
- 2D and 3D feature toolkits
- Egomotion estimation
- Facial recognition system
- Gesture recognition
- Human-Computer Interface (HCI)
- Mobile robotics
- Motion understanding
- Object Identification
- Segmentation and Recognition
- Stereopsis Stereo vision: depth perception from 2 cameras
- Structure from motion (SFM)
- Motion tracking
To support some of the above areas, OpenCV includes a statistical machine learning library that contains:
- Boosting
- Decision tree learning
- Expectation-maximization algorithm
- k-nearest neighbor algorithm
- Naive Bayes classifier
- Artificial neural networks
- Random forest
- Support vector machine (SVM)
Programming language
The library is mainly written in C, which makes it portable to some specific platforms such as digital signal processors. Wrappers for languages such as C#, Python, Ruby and Java (using JavaCV[3]) have been developed to encourage adoption by a wider audience.
However, since version 2.0, OpenCV includes both its traditional C interface as well as a new C++ interface, that seeks to reduce common programming errors when using OpenCV in C. Much of the new developments and algorithms in OpenCV are in the C++ interface. Unfortunately, it is much more difficult to provide wrappers in other languages to C++ code as opposed to C code; therefore the other language wrappers are generally lacking some of the newer OpenCV 2.0 features.
OS Support
OpenCV runs under FreeBSD, Linux (in conjugation of v4l), Mac OS and Windows. The user can get official releases from sourceforge, or take the current snapshot under SVN from there. OpenCV uses CMake.
Windows prerequisites
The BaseClasses from DirectShow SDK is required to build some camera input-related parts of OpenCV on Windows. This SDK is found in the Samples\Multimedia\DirectShow\BaseClasses subdirectory of the Microsoft Platform SDK (or DirectX SDK 8.0 to 9.0c / DirectX Media SDK prior to 6.0), which must be built prior to the building of OpenCV.
Bugs
In Windows, this program currently deletes your environment variables under Path. Remember to backup path by opening "System" in control panel, clicking the Advanced Tab, and then clicking Environment Variables. In the bottom panel, copy the contents of Path and store in notepad or similar before installing.
Then follow these steps again after the installation is complete. If "D:\OpenCV2.0\bin" is all that is shown in this evironment variable, copy and paste everything inside of notepad in front of this path, leaving that path there. Make sure a semicolon is placed between whatever is pasted and "D:\OpenCV2.0\bin"
References
- ^ OpenCV Wiki
- ^ Bradski, G.; Kaehler, A. (2008), Learning OpenCV: Computer Vision with the OpenCV Library
- ^ "JavaCV". Retrieved 2010-06-01.
External links
- OpenCV on SourceForge
- OpenCV Documentation Wiki
- Most active OpenCV forums on Yahoo Groups
- Template:Zh icon Chinese OpenCV Site
- Guide to OpenCV at Leeds University
- Facedetection with PHP and OpenCV
- Introduction to programming with OpenCV
- Automatic Facedetection with OpenCV in PHP
- fscience.net OpenCV 2.0 API documentation with function search
- Live motion tracking with Python and a Webcam
- AI Shack: OpenCV tutorials and machine learning
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 optional interface to the OpenCV
- Into, an open source machine intelligence framework with an optional interface to OpenCV.