OpenCV is the leading open source library for computer vision, image processing and machine learning, and now features GPU acceleration for real-time operation.
OpenCV is released under a BSD license and hence it’s free for both academic and commercial use. It has C++, C, Python and Java interfaces and supports Windows, Linux, Mac OS, iOS and Android. OpenCV was designed for computational efficiency and with a strong focus on real-time applications. Written in optimised C/C++, the library can take advantage of multi-core processing. Adopted all around the world, OpenCV has more than 47 thousand people of the user community and estimated number of downloads exceeding 6 million. Usage ranges from interactive art to mines inspection, stitching maps on the web or through advanced robotics.
The OpenCV library has been downloaded more than five million times and is popular with both academics and design engineers. OpenCV is used extensively by companies, research groups, and governmental bodies. Some of the companies that use OpenCV are Google, Yahoo, Microsoft, Intel, IBM, Sony, Honda, and Toyota. Many start-ups such as Applied Minds, VideoSurf, and Zeitera make extensive use of OpenCV. OpenCV’s deployed uses span the range from stitching Streetview images together, detecting intrusions in surveillance video in Israel, monitoring mine equipment in China (more controversially, OpenCV is used in China’s “Green Dam” internet filter), helping robots navigate and pick up objects at Willow Garage, detection of swimming pool drowning events in Europe, running interactive art in Spain and New York, checking runways for debris, inspecting labels on products in factories around the world on to rapid face detection in Japan.
With the creation of the OpenCV Foundation in 2012, OpenCV has a new face and a new infrastructure. It now encompasses more than 40 different “builders”, which test OpenCV in various configurations on different operating systems, both mobile and desktop. A “binary compatibility builder” also exists, which evaluates the binary compatibility of the current snapshot against the latest OpenCV stable release, along with a documentation builder that creates reference manuals and uploads.
OpenCV4Android is the official name of the Android port of the OpenCV library. OpenCV began supporting Android in a limited “alpha” fashion in early 2010 with OpenCV version 2.2. NVIDIA subsequently joined the project and accelerated the development of OpenCV for Android by releasing OpenCV version 2.3.1 with beta Android support. This initial beta version included an OpenCV Java API and native camera support. The first official non-beta release of OpenCV for Android was in April 2012, with OpenCV 2.4. At the time of this article’s publication, OpenCV 2.4.3 has just been released, with even more Android support improvements and features, including a Tegra 3 SoC-accelerated version of OpenCV.
OPENCV JAVA API
With the Java API, each ported OpenCV function is “wrapped” with a Java interface. The OpenCV function itself, on the other hand, is written in C++ and compiled. In other words, all of the actual computations are performed at a native level. However, the Java wrapper results in a performance penalty in the form of JNI (Java Native Interface) overhead, which occurs twice: once at the start of each call to the native OpenCV function and again after each OpenCV call (i.e. during the return). This performance penalty is incurred for every OpenCV function called; the more OpenCV functions called per frame, the bigger the cumulative performance penalty.
OpenCV is being used for a very wide range of applications which include:
- Street view image stitching
- Automated inspection and surveillance
- Robot and driver-less car navigation and control
- Medical image analysis
- Video/image search and retrieval
- Movies – 3D structure from motion
- Interactive art installations
The Features of OpenCV are as follows:
- Image/video I/O, processing, display
- Object/feature detection
- Geometry-based monocular or stereo computer vision
- Computational photography
- Machine learning and clustering
- CUDA acceleration
To Learn more on OpenCV, Click Here