Open Source Computer Vision Library (OpenCV, http://opencv.org/) started as an Intel research initiative around 1999. Now, it is the most popular open source software library for computer vision and machine learning. In the beginning, it was a set of C library functions for image processing and computer vision. Now, it has C++, Python, Java, and MATLAB bindings and works on macOS, Windows, Linux, Android, and iOS, with acceleration support from CUDA and OpenCL. The OpenCV library comes with a collection of modules. Each of the modules handles a specific group of applications under the umbrella of image processing, computer vision, and machine learning. The following are the common modules:
• core: Core OpenCV data structures and functionalities
• imgproc: Image processing
• imgcodecs: Image file reading and writing
• videoio: Media input/output routines
• highgui: High-level graphical user interface
• video: Video analysis
• calib3d: Camera calibration and 3D reconstruction
• features2d: Working with 2D features description and matching
• objdetect: Object detection such as faces
• ml: Machine learning
• flann: Clustering and searching in higher-dimensional spaces
• photo: Computational photography
• stitching: Stitching images together
• shape: Shape matching
• superres: Super-resolution enhancement
• videostab: Video stabilization
• viz: 3D visualization
OpenCV includes several extra modules that provide additional functionalities, such as text recognition, surface matching, and 3D depth processing. This book also covers the module optflow, which performs optical flow analysis.