Intel® IPP - Open Source Computer Vision Library (OpenCV) FAQ

  • How is Intel® IPP different from OpenCV?
  • How do I use OpenCV 3.x with Intel® IPP functions?
  • How do I use OpenCV 2.4 with Intel® IPP 9.0?
  • How do I use OpenCV 2.4 with Intel® IPP 8.x?
  • How do I use OpenCV version 1.x with Intel® IPP?
  • How do I use both Intel® IPP and OpenCV functions in my application?
  • How do I get support for the OpenCV library?
  • How do I submit requests for computer vision functions to be supported in the Intel IPP?

Note: For OpenCV version 3.0 or above, Intel® IPP provides a subset of Intel® IPP functions, the IPP-ICV libraries, which can be easily used with OpenCV.  Integrating Intel® IPP with OpenCV is automatically done by OpenCV, Check the “How do I use OpenCV 3.x with Intel IPP functions” part in the article on the steps.  To use the Intel® IPP with some old version of OpenCV,  please follow the steps for old versions  in the articles

How is Intel IPP different from OpenCV?
OpenCV (Open Source Computer Vision) is a library of programming functions for real time computer vision, and Intel® IPP provides the optimized functions for the OpenCV functions. 
In addition to computer vision, Intel IPP provides high performance low-level routines for imaging, cryptography, signal processing and data compression. These functions are designed maximize application performance on Intel® processor-based workstations and servers. 

How do I use OpenCV 3.x with Intel IPP functions?

OpenCV 3.x supports optimization on x86 and x64 platforms with Intel® Integrated Performance Primitives, Intel® IPP offers a special subset of Intel® IPP functions for image processing and computer vision(the IPP-ICV libraries) for OpenCV. The IPP-ICV package support the optimization on AVX2, SSE4.x, SSE2 instructions sets.

The IPP-ICV package is provided with the OpenCV library, and the optimization with IPP-ICV is enabled by default on the supported platforms, and users do not need install additional standalone Intel® IPP package.  Check this page on Intel IPP-ICV package for Opencv 3.0.

Here is example to build OpenCV 3.x with Intel® IPP optimized functions at Linux*(it use similar steps for Windows OS*):

  1. Go to <OpenCV DIR>
           #cd <OpenCV DIR>
  2. Create a new folder for the building script, and go to that directory:

           #mkdir build
           #cd build

  3. Create the building files.Add the “-D WITH_IPP=ON” into cmake command line:
         #cmake -D WITH_IPP=ON …..

    Note: The configuration script will automatically download Intel IPP-ICV package from the network. This takes some time, after it completes, the Intel IPP ICV files will be found at  3rdparty/ippicv/downloads/PACKAGE_HASH_VALUE folder

    If it can successfully complete this step, in the configuration result, you should see Intel IPP are enabled:

    Note: If you build system cannot download the IPP-ICV package automatically, you can manually download the IPP-ICV package: 
        Linux package:   ippicv_linux_20151201.tgz

       Window package:
    Put the put package at following OpenCV folder:
        Linux: 3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e

       Windows: 3rdparty/ippicv/downloads/windows-04e81ce5d0e329c3fbc606ae32cad44d
    Then use “cmake -D WITH_IPP=ON” to create the building files
  4. Build the OpenCV source code:

How do I use OpenCV 2.4 with Intel IPP 9.0 and a later version?

Intel IPP 9.0 introduced a few APIs change. To use the OpenCV 2.4 with the Intel(R) IPP 9.0 or a later version, users need to get the Intel IPP legacy libraries first,  then make the following change to build the library:

 1.  Download Intel(R) IPP legacy libraries. Visit the Intel® IPP Legacy Libraries article, and check "Download and Installation" part to install Intel® IPP legacy libraries. 

2. Set an IPPROOT_LEGACY environment variable to the IPP legacy library folder. For example: 
     At Windows:       > set  IPPROOT_LEGACY=C:\Work\IPP_legacy   
     Or at Linux                $ export IPPROOT_LEGACY=~/IPP_legacy       
     The $IPPROOT_LEGACY/include should point to IPP legacy header files.

3. Modify the following CMake files (line numbers are provided for original file):

   a. <OpenCV dir>/opencv/sources/cmake/OpenCVFindIPP.cmake
           Change line #166:
                              ${IPP_LIB_PREFIX}${IPP_PREFIX}${IPPI}90lgc${IPP_SIFFIX}${IPP_LIB_SUFFIX} )

           Add a line after line #194:
                               set(IPP_LEGACY_LIBRARY_DIRS $ENV{IPPROOT_LEGACY}/lib PARENT_SCOPE)

           Change line #199:
    Before:    if(NOT EXISTS ${IPP_ROOT_DIR}/../em64t)
    After:        f(NOT EXISTS ${IPP_ROOT_DIR}/../intel64_lin)

           Change line #203:
     Before:       if(NOT EXISTS ${IPP_ROOT_DIR}/../ia32)
     After:         if(NOT EXISTS ${IPP_ROOT_DIR}/../ia32_lin)

            Add a line after line #218:  
   Before:   if (APPLE)
                          set(IPP_LIBRARY_DIRS ${IPP_ROOT_DIR}/lib)
     After:     if (APPLE)
                  set(IPP_LIBRARY_DIRS ${IPP_ROOT_DIR}/lib)

            Change line #223:
            Before:   endif()
                               set(IPP_LIBRARY_DIRS ${IPP_ROOT_DIR}/lib/intel64)
  After:    endif()
                    set(IPP_LEGACY_LIBRARY_DIRS $ENV{IPPROOT_LEGACY}/lib/intel64)
set(IPP_LIBRARY_DIRS ${IPP_ROOT_DIR}/lib/intel64 ${IPP_LEGACY_LIBRARY_DIRS})                                 

         Change line #228:
 get_filename_component(INTEL_COMPILER_LIBRARY_DIR ${IPP_ROOT_DIR}/../compiler/lib REALPATH) 
        get_filename_component(INTEL_COMPILER_LIBRARY_DIR ${IPP_ROOT_DIR}/../lib REALPATH)

           Change line #237:
             Before:    ${INTEL_COMPILER_LIBRARY_DIR}/intel64)
             After:       ${INTEL_COMPILER_LIBRARY_DIR}/intel64

            Change line #239:

             Before:     ${INTEL_COMPILER_LIBRARY_DIR}/intel64)
             After:          ${INTEL_COMPILER_LIBRARY_DIR}/intel64

            Change line #246:
                 Before:      ${INTEL_COMPILER_LIBRARY_DIR}/ia32)
                 After:        ${INTEL_COMPILER_LIBRARY_DIR}/ia32

            Add a line after line #253:
                After:         set(IPP_LIBRARIES ${IPP_LIBRARIES} PARENT_SCOPE) 

    b.  <OpenCV dir>/opencv/sources/cmake/OpenCVFindLibsPerf.cmake
        Add a line after line #16:
        Before:  ocv_include_directories(${IPP_INCLUDE_DIRS})
         After:    ocv_include_directories(${IPP_INCLUDE_DIRS}) 

4.    Create small “ipp_legacy.h” file in <OpenCV dir>/opencv/sources/modules/core/include/opencv2/core directory

#include "ippcv90legacy.h"
#include "ippi90legacy.h"

#if defined(_WIN32)
#pragma warning( disable : 4505 4996 )
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
#pragma GCC diagnostic ignored "-Wunused-function"

static void ippStaticInit()

static void ippiHaarClassifierFree_32f(void* p)

5.  Modify <OpenCV dir>/opencv/sources/modules/core/include/opencv2/core/internal.hpp file,  add one line to include ""ipp_legacy.h" 

#ifdef HAVE_IPP
#  include "ipp.h"
#  include "ipp_legacy.h" // Add this line

CV_INLINE IppiSize ippiSize(int width, int height)

6.    Make sure IPPROOT environment variable is set to IPP library folder, and build OpenCV using standard CMake procedure with Intel® IPP support.

How do I use OpenCV 2.4 with Intel IPP 8.x? 

OpenCV 2.4 use Cmake configuration to add Intel® IPP libraries, which is different from the OpenCV 1.x release. The building scrip supports Intel® IPP 7.0 and previous IPP release. To use OpenCV 2.4 with the newer Intel® IPP 8.x release, it needs to manually change the OpenCVFindIPP.cmake file in OpenCV source and make sure it can find the correct version of Intel IPP 8.x at your system:

Here is an example to build the OpenCV 2.4 with Intel IPP 8.1. For other version, you needs to slightly change the Intel® IPP names and Intel(® IPP folders for that version:

  1. Open opencv-2.4.5/cmake/OpenCVFindIPP.cmake file

          Line 182:
            Change:    if(NOT EXISTS ${IPP_ROOT_DIR}/../em64t)
             To:           If(NOT EXISTS ${IPP_ROOT_DIR}/lib/intel64)
          Line 186:
    hange:    if(NOT EXISTS ${IPP_ROOT_DIR}/../ia32)
              To:            if(NOT EXISTS ${IPP_ROOT_DIR}/lib/ia32)

        Note, if you are using IPP 7.x, or IPP 6.1, the building scrip supports that version, and it does not need to change this file.

    2.  To switch ‘ON’ IPP support, define “WITH_IPP=ON” in build command line:  
            > cmake-D WITH_IPP=ON /usr/opencv-2.4.x

      If will report the third party libraries support information as below:

                 --found IPP: 8.1.1[8.1.1]
                 --IPP libs : libippvm_l.a; libippcc_l.a;libippcv_l.a;libipps_l.a;libippcore_l.a
                  Other Third party libraries
                   Use IPP 8.1.1.
                    at : /opt/intel/ipp….

How do I use OpenCV version 1.x with Intel IPP?
OpenCV version 1.0 provides a transparent user interface to the Intel® IPP by automatically loading the Intel IPP libraries at runtime if they are available. It supports IPP version 5.1 to version IPP 6.1.

To use OpenCV 1.x with Intel IPP, users need to download Intel IPP 6.1 release. If you have a valid Intel IPP licenses,   please login into the Intel Registration Center to get the package.

The following is test code small test code to detect if Intel IPP dlls are loaded by OpenCV after you install Intel 6.1 package.

#include <stdio.h>
#pragma comment( lib, "highgui.lib" )
#pragma comment( lib, "cxcore.lib" )
int main(){   
int NumUploadedFunction = 0;
NumUploadedFunction = cvUseOptimized(1);
printf("\t NumUploadedFunction = %d \n\n", NumUploadedFunction);

const char* opencv_lib = 0;
const char* add_modules = 0;
cvGetModuleInfo(0, &opencv_lib,&add_modules);
printf("\t opencv_lib = %s,\n\t add_modules = %s\n\n", opencv_lib,add_modules);

return 0;

if IPP dll are loaded automatically, the output of detect code is like 
    NumUploadedFunction = 144
    opencv_lib = cxcore: 1.0.0,
    add_modules = ippcv-6.1.dll, ippi-6.1.dll, ipps-6.1.dll, ippvm-6.1.dll, ippcc-6.1.dll

How do I use both Intel IPP and OpenCV functions in my application?
The OpenCV source code contains examples of how Intel IPP functions are used. Intel IPP performs operations directly on image buffers so you would need to pass pointers to those buffers to the Intel IPP along with corresponding information about the buffers such as image width and height. The Intel IPP and OpenCV function calls can be easily mixed in the same application. Here is an example:

// Let A, B and C be single-channel 8-bit images. 
IplImage *A, *B, *C; 
// Compute C = (A+B)/2 using an Intel IPP function call 
IppiSize size = { A->width, A->height }; 
ippiAdd_8u_C1RSfs( (Ipp8u*)A->imageData, A->widthStep, (Ipp8u*)B->imageData, B->widthStep, (Ipp8u*)C >imageData, C->widthStep, size, 1 );

For more information, please check the OpenCV project page.

How do I get support for the OpenCV library?
Please check the OpenCV FAQ for answers to common questions as well as information on where to submit bug reports. Please search for answers at and submit questions/bugs to the OpenCV newsgroup

How do I submit requests for computer vision functions to be supported in the Intel IPP?
Please submit your Intel IPP feature requests and problem reports to Intel® Premier Support. You can also participate in the Intel IPP discussion forum.  

For more complete information about compiler optimizations, see our Optimization Notice.



How do I use OpenCV 2.4 with Intel IPP 9.0? section

            Add a line after line #218:  
   Before:   if (APPLE)
                          set(IPP_LIBRARY_DIRS ${IPP_ROOT_DIR}/lib)
     After:     if (APPLE)
                  set(IPP_LIBRARY_DIRS ${IPP_ROOT_DIR}/lib)


should be replaced with

            Add a line after line #218:  
   Before:   if (APPLE)
                          set(IPP_LIBRARY_DIRS ${IPP_ROOT_DIR}/lib)
     After:     if (APPLE)
                  set(IPP_LIBRARY_DIRS ${IPP_ROOT_DIR}/lib)

Will we have a update FAQ :)

hi guys,

i have intel cluster studio 2013 and redhat OS with 2 computenode having one intel mic card and one gpu (NVIDIA k20x). i tried so many ways to install opencv in masternode but i enable to proceed please do you have any idea about how to install opencv using intel parallel complier

please help me 

Hello everyone,

if you have any question about IPP and OpenCV. please post them to IPP forum : or

IPP and OpenCV can be used as two softwares. but for historical reasons, we often talk about them together.

Regarding Intel CV softwares, there is no a specific product for it. Beyond IPP, some software or tools in Intel from different aspects may for the purpose.
Please see user-community for visual computing:
Developing Software for Visual Computing
Get answers, tips, tweaks & techniques from experts in graphics and game development.
Subforums: Intel® Graphics Performance Analyzers (Intel® GPA)
, Intel® OpenCL SDK ,
Creating Digital Art and Animation ,
Embree: Photo-Realistic Ray Tracing Kernels (182), Havok (6222), Havok Behavior (21),

or Intel® Perceptual Computing SDK
This is the place to get support on the Intel® Perceptual Computing SDK. Perceptual Computing Main Product Page .

Best Regards,

i need to know more about opencv and ipp can any one help?

Does anyone know of a good source of Open CV Benchmarks running on Huron River/Sandy Bridge Mobile architecture?

hi any source code to recognize 3d object via webcam??
thank you

very good

this page is not confirm...... what is intel cv.

Hello !

Here is a topic which explains how to install OpenCV using IPP :-)

Have a good week !


Add a Comment

Have a technical question? Visit our forums. Have site or software product issues? Contact support.