OpenCV is a software toolkit for processing real-time image and video, as well as providing analytics, and machine learning capabilities.
Development Benefits
Using OpenCV, a BSD licensed library, developers can access many advanced computer vision algorithms used for image and video processing in 2D and 3D as part of their programs. The algorithms are otherwise only found in high-end image and video processing software.
Powerful Built-In Video Analytics
Video analytics is much simpler to implement with OpenCV API’s for basic building blocks such as background removal, filters, pattern matching and classification.
Real-time video analytics capabilities include classifying, recognizing, and tracking: objects, animals, people, specific features such as vehicle number plates, animal species, and facial features such as faces, eyes, lips, chin, etc.
Hardware and Software Requirements
OpenCV is written in Optimized C/C++, is cross-platform by design and works on a wide variety of hardware platforms, including Intel Atom® platform, Intel® Core™ processor family, and Intel® Xeon® processor family.
Developers can program OpenCV using C++, C, Python*, and Java* on Operating Systems such as Windows*, many Linux* distros, Mac OS*, iOS* and Android*.
Although some cameras work better due to better drivers, if a camera has a working driver for the Operating System in use, OpenCV will be able to use it.
Hardware Optimizations
OpenCV takes advantage of multi-core processing and OpenCL™. Hence, OpenCV can also take advantage of hardware acceleration if integrated graphics is present.
OpenCV v3.2.0 release can use Intel optimized LAPACK/BLAS included in the Intel® Math Kernel Libraries (Intel® MKL) for acceleration. It can also use Intel® Threading Building Blocks (Intel® TBB) and Intel® Integrated Performance Primitives (Intel® IPP) for optimized performance on Intel platforms.
OpenCV uses the FFMPEG library and can use Intel® Quick Sync Video technology to accelerate encoding and decoding using hardware.
OpenCV and IoT
OpenCV has a wide range of applications in traditional computer vision applications such as optical character recognition or medical imaging.
For example, OpenCV can detect Bone fractures1. OpenCV can also help classify skin lesions and help in the early detection of skin melanomas2.
However, OpenCV coupled with the right processor and camera can become a powerful new class of computer vision enabled IoT sensor. This type of design can scale from simple sensors to multi-camera video analytics arrays. See Designing Scalable IoT Architectures for more information.3
IoT developers can use OpenCV to build embedded computer vision sensors for detecting IoT application events such as motion detection or people detection.
Designers can also use OpenCV to build even more advanced sensor systems such as face recognition, gesture recognition or even sentiment analysis as part of the IoT application flow.
IoT applications can also deploy OpenCV on Fog nodes at the Edge as an analytics platform for a larger number of camera based sensors.
For example, IoT applications use camera sensors with OpenCV for road traffic analysis, Advanced Driver Assistance Systems (ADAS)3, video surveillance4, and advanced digital signage with analytics in visual retail applications5.
OpenCV Integration
When developers integrated OpenCV with a neural-network backend, it unleashed the true power of computer vision. Using this approach, OpenCV works with Convolutional Neural Networks (CNN) and Deep Neural Networks (DNN) to allow developers to build innovative and powerful new vision applications.
To target multiple hardware platforms, these integrations need to be cross platform by design. Hardware optimization of deep learning algorithms breaks this design goal. The OpenVX architecture standard proposes resource and execution abstractions.
Hardware vendors can optimize implementations with a strong focus on specific platforms. This allows developers to write code that is portable across multiple vendors and platforms, as well as multiple hardware types.
Intel® Computer Vision SDK (Beta) is an integrated design framework and a powerful toolkit for developers to solve complex problems in computer vision. It includes Intel’s implementation of the OpenVX API as well as custom extensions. It supports OpenCL custom kernels and can integrate CNN or DNN.
The pre-built and included OpenCV binary has hooks for Intel® VTune™Amplifier for profiling vision applications.
Getting Started:
Try this tutorial on basic people recognition. Also, see OpenCV 3.2.0 Documentation for more tutorials.
Related Software:
Intel® Computer Vision SDK - Accelerated computer vision solutions based on OpenVX standard, integrating OpenCV and deep learning support using the included Deep Learning (DL) Deployment Toolkit.
Intel® Integrated Performance Primitives (IPP) - Programming toolkit for high-quality, production-ready, low-level building blocks for image processing, signal processing, and data processing (data compression/decompression and cryptography) applications.
Intel® Math Kernel Library (MKL) - Library with accelerated math processing routines to increase application performance.
Intel® Media SDK - A cross-platform API for developing media applications using Intel® Quick Sync Video technology.
Intel® SDK for OpenCL™ Applications - Accelerated and optimized application performance with Intel® Graphics Technology compute offload and high-performance media pipelines.
Intel® Distribution for Python* - Specially optimized Python distribution for High-Performance Computing (HPC) with accelerated compute-intensive Python computational packages like NumPy, SciPy, and scikit-learn.
Intel® Quick Sync Video - Leverage dedicated media processing capabilities of Intel® Graphics Technology to decode and encode fast, enabling the processor to complete other tasks and improving system responsiveness.
Intel® Threading Building Blocks (TBB) - Library for shared-memory parallel programming and intra-node distributed memory programming.
References:
- Bone fracture detection using OpenCV
- Mole Investigator: Detecting Cancerous Skin Moles Through Computer Vision
- Designing Scalable IoT Architectures
- Advanced Driver Assistance Systems (ADAS)
- Smarter Security Camera: A Proof of Concept (PoC) Using the Intel® IoT Gateway
- Introduction to Developing and Optimizing Display Technology