OpenCV (Open Source Computer Vision) is a software toolkit for real-time processing of images and video, analytics, and machine learning. The OpenCV toolkit has over 2,500 optimized classic and state-of-the-art algorithms for computer vision and machine learning. The capabilities in OpenCV are often only found in high-end computer vision software. There are many companies and researchers that use OpenCV in computer vision applications. Example use cases include:
- recognize faces,
- identify objects,
- classify human actions,
- track camera movements,
- track moving objects,
- extract 3D models of objects,
- produce 3D points clouds from stereo cameras,
- stitch images together to produce a high-resolution image of an entire scene and,
- recognize scenery.
The OpenCV APIs provide a library of building blocks necessary to implement computer vision applications. And the library is continuously being added to by researchers. Just imagine having to implement state-of-the-art algorithms or highly optimized algorithms yourself. Some examples of the building blocks in the OpenCV toolkit include background removal, filters, and pattern matching.
OpenCV is written in optimized C/C++, it is cross-platform by design and works on a wide variety of hardware platforms. Not only does it work for specific vendor platforms, OpenCV has been engineered to leverage any and all possible capabilities in the available hardware. This ensures the best possible performance for computer applications that use the OpenCV toolkit.
The OpenCV toolkit is supported on all the major operating systems. This includes Windows, Linux, Mac OS, iOS and Android. And developers on these operating systems have their pick of C, C++, Python, and Java to write their computer vision application using OpenCV. Developers can develop computer vision applications that they can deploy to many platforms without additional effort.
Recently the contributors to OpenCV have been integrating a neural-network backend. OpenCV now works with Convolutional Neural Networks (CNN) and Deep Neural Networks (DNN) and enables developers to build innovative and state-of-the-art computer vision applications.