Clone this wiki locally
The transparent OpenCV API allows application developers to automatically utilize various kinds of accelerators (GPUs, APUs, DSPs etc.) that may be available on the host platform. No or little changes to OpenCV-based applications may be needed to engage the acceleration. Starting with OpenCV 3.0 OpenCL kernels were integrated inside OpenCV API: it does not need to specify `cv::ocl::Canny`, `cv::gpu::Canny` etc; `cv::Canny` just works on both CPU and GPU. Because of that `ocl` module became redundant and was removed.
A separate guide on this topic is being prepared, but you are welcome to take a look at and try out our Transparent API samples <https://github.com/opencv/opencv/tree/master/samples/tapi> to see how it works.
OpenCV 3.0 supports optimization on x86 and x64 platforms with Intel® Integrated Performance Primitives (Intel® IPP, https://software.intel.com/en-us/intel-ipp) by two ways: with standalone Intel® IPP that should be installed separately and with special subset of Intel® IPP 8.1.1 functions for image processing and computer vision, IPP-ICV libraries, that contain more than 700 functions and support AVX2, SSE4.x, SSE2 instructions sets. Intel Corporation granted OpenCV Foundation and all our users the right to use IPP-ICV libraries free of charge for both non-commercial and commercial use. Optimization with IPP-ICV is enabled by default on the supported platforms. Intel® IPP optimization (with both standalone and IPP-ICV libraries) is available for the following platforms:
- Windows (32-bit and 64-bit)
- Linux (32-bit and 64-bit)
- Mac OS (32-bit and 64-bit)
- Android (32-bit)
In OpenCV 3.0 Intel® IPP usage was revised and extended with new 58 family functions that should give visible performance improvement on all supported platforms and instructions sets. As an example, the overall performance gain is about 40% comparing OpenCV with and without Intel® IPP 8.1.1/IPP-ICV usage and running on Intel Haswell processor. Some of examples are on the chart below.
OpenCV 3.0 includes support for Intel® IPP Asynchronous C/C++ library by implemented inline conversion functions between Intel® IPP Asynchronous objects (IPPhppMatrix) and OpenCV objects (cv::Mat). OpenCV tutorial contains an example demonstrating how to use conversion functions and work with Intel® IPP Asynchronous functions.
Created new iVideoCapture class in VideoIO module. It uses data flow more optimal by memory copies minimization on both CPU and GPU by applied Transparent API. Currently this class supports Intel Perceptual Computing devices (Creative Senz3D cameras) and DirectShow devices.