OpenCV Introduction

#What is OpenCV?

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 optimized C/C++, the library can take advantage of multi-core processing. Enabled with OpenCL, it can take advantage of the hardware acceleration of the underlying heterogeneous compute platform. Adopted all around the world, OpenCV has more than 47 thousand people of user community and estimated number of downloads exceeding 9 million. Usage ranges from interactive art, to mines inspection, stitching maps on the web or through advanced robotics.

OpenCV (Open Source Computer Vision Library) is an open-source BSD-licensed library that includes several hundreds of computer vision algorithms.

OpenCV has a modular structure, which means that the package includes several shared or static libraries. The following modules are available:

  • Core functionality
    • a compact module defining basic data structures, including the dense multi-dimensional array Mat and basic functions used by all other modules.
  • Image processing
    • an image processing module that includes linear and non-linear image filtering, geometrical image transformations (resize, affine and perspective warping, generic table-based remapping), color space conversion, histograms, and so on.
  • video
    • a video analysis module that includes motion estimation, background subtraction, and object tracking algorithms.
  • calib3d
    • basic multiple-view geometry algorithms, single and stereo camera calibration, object pose estimation, stereo correspondence algorithms, and elements of 3D reconstruction.
  • features2d
    • salient feature detectors, descriptors, and descriptor matchers.
  • objdetect
    • detection of objects and instances of the predefined classes (for example, faces, eyes, mugs, people, cars, and so on).
  • highgui
    • an easy-to-use interface to simple UI capabilities.
  • videoio
    • an easy-to-use interface to video capturing and video codecs.
  • gpu
    • GPU-accelerated algorithms from different OpenCV modules.
  • … some other helper modules, such as FLANN and Google test wrappers, Python bindings, and others.

#OpenCV Tutorials

The following links describe a set of basic OpenCV tutorials. All the source code mentioned here is provided as part of the OpenCV regular releases, so check before you start copy & pasting the code. The list of tutorials below is automatically generated from reST files located in our GIT repository.

  • Introduction to OpenCV: You will learn how to setup OpenCV on your computer!
    • Introduction into Android Development
    • OpenCV4Android SDK
    • Android Development with OpenCV
    • Installation in iOS
  • The Core Functionality (core module):
    • Here you will learn the about the basic building blocks of the library. A must read and know for understanding how to manipulate the images on a pixel level.
  • Image Processing (imgproc module):
    • In this section you will learn about the image processing (manipulation) functions inside OpenCV.
  • High Level GUI and Media (highgui module):
    • This section contains valuable tutorials about how to read/save your image/video files and how to use the built-in graphical user interface of the library.
  • Camera calibration and 3D reconstruction (calib3d module):
    • Although we got most of our images in a 2D format they do come from a 3D world. Here you will learn how to find out from the 2D images information about the 3D world.
  • 2D Features framework (feature2d module):
    • Learn about how to use the feature points detectors, descriptors and matching framework found inside OpenCV.
  • Video analysis (video module):
    • Look here in order to find algorithms usable on your video streams like: motion extraction, feature tracking and foreground extractions.
  • Object Detection (objdetect module):
    • Ever wondered how your digital camera detects peoples and faces? Look here to find out!
  • Machine Learning (ml module):
    • Use the powerful machine learning classes for statistical classification, regression and clustering of data.
  • Computational photography (photo module):
    • Use OpenCV for advanced photo processing.
  • GPU-Accelerated Computer Vision (cuda module):
    • Squeeze out every little computation power from your system by using the power of your video card to run the OpenCV algorithms.
  • OpenCV iOS:
    • Run OpenCV and your vision apps on an iDevice
  • OpenCV Viz:
    • These tutorials show how to use Viz module effectively.

#Introduction into Android Development

Development in Java

1.Sun JDK 6 (Sun JDK 7 is also possible)

2.Android SDK

3.Android SDK components

  • Android SDK Tools, revision 20 or newer.
  • SDK Platform Android 3.0 (API 11).

4.Eclipse IDE

5.ADT plugin for Eclipse

Native development in C++

1.Android NDK

2.CDT plugin for Eclipse

If you selected for installation the NDK plugins component of Eclipse ADT plugin (see the picture above) your Eclipse IDE should already have CDT plugin (that means C/C++ Development Tooling). There are several possible ways to integrate compilation of C++ code by Android NDK into Eclipse compilation process. We recommend the approach based on Eclipse CDT(C/C++ Development Tooling) Builder.

#Building application native part from command line

#Building application native part from Eclipse (CDT Builder)



Written on November 21, 2015