OpenCV usage with OpenVINO
Contents
- Introduction
- Approach #1: Install prebuilt OpenCV
- Approach #2: Build OpenCV against specific version of OpenVINO
Introduction
OpenVINO does not provide custom OpenCV drop since 2022.1.1 release. If OpenVINO user needs OpenCV functionality there are 2 approaches how to get it:
- Install prebuilt OpenCV from another sources (system repositories, pip, conda, homebrew). It is easy to follow this approach, however it has several disadvantages:
- OpenCV version is out-of-date
- OpenCV does not contain G-API module (e.g. some OMZ demos use G-API functionality)
- OpenCV does not use available CPU instructions since it has build to cover wide range of hardware
- OpenCV does not support Intel TBB, Intel Media SDK
- OpenCV DNN module can not use OpenVINO as computational backend
- Build OpenCV from source code against specific version of OpenVINO. This approach solves the issues mentioned above.
Approach #1: Install prebuilt OpenCV
Installing on Ubuntu
OpenCV is available from the default Ubuntu repositories:
sudo apt update
sudo apt install libopencv-dev python3-opencv
Installing on RHEL
OpenCV is available from the default RHEL repositories.
- Enable CodeReady Linux Builder Repository:
subscription-manager repos --enable codeready-builder-for-rhel-8-x86_64-rpms
- Install OpenCV:
sudo yum update
sudo yum install opencv opencv-devel opencv-python
Installing on Windows
- Download OpenCV windows package on the official OpenCV releases page
Windows archive contains VC postfix, e.g.:
opencv-4.6.0-vc14_vc15.exe
- Extract the archive
- Setup environment variables by running the script
opencv\build\setup_vars_opencv4.cmd
Installing on macOS
OpenCV could be installed via Homebrew:
brew install opencv
Approach #2: Build OpenCV against specific version of OpenVINO
Note
: The instruction below describes how to build OpenCV with the same compilation flags and dependencies as were used for OpenVINO OpenCV build before 2022.1.1 release.
If you would like to use a minimal set of compilation flags and dependencies to build OpenCV compatible with OpenVINO please follow another instruction.
Building on Ubuntu
Prerequisites
- Install OpenVINO according to the instruction
- Install the following packages:
The command
sudo apt-get install \
build-essential \
cmake \
libgtk-3-dev \
libpng-dev \
libjpeg-dev \
libwebp-dev \
libtiff5-dev \
libopenexr-dev \
libopenblas-dev \
libx11-dev \
libavutil-dev \
libavcodec-dev \
libavformat-dev \
libswscale-dev \
libavresample-dev \
libtbb2 \
libssl-dev \
libva-dev \
libmfx-dev \
libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev
Procedure
- Setup environment variables to detect OpenVINO:
source /opt/intel/openvino/setupvars.sh
- Copy OpenCV repository:
git clone --recurse-submodules https://github.com/opencv/opencv.git
- Compile and install OpenCV:
The command
cmake \
-D BUILD_INFO_SKIP_EXTRA_MODULES=ON \
-D BUILD_EXAMPLES=OFF \
-D BUILD_JASPER=OFF \
-D BUILD_JAVA=OFF \
-D BUILD_JPEG=ON \
-D BUILD_APPS_LIST=version \
-D BUILD_opencv_apps=ON \
-D BUILD_opencv_java=OFF \
-D BUILD_OPENEXR=OFF \
-D BUILD_PNG=ON \
-D BUILD_TBB=OFF \
-D BUILD_WEBP=OFF \
-D BUILD_ZLIB=ON \
-D WITH_1394=OFF \
-D WITH_CUDA=OFF \
-D WITH_EIGEN=OFF \
-D WITH_GPHOTO2=OFF \
-D WITH_GSTREAMER=ON \
-D OPENCV_GAPI_GSTREAMER=OFF \
-D WITH_GTK_2_X=OFF \
-D WITH_IPP=ON \
-D WITH_JASPER=OFF \
-D WITH_LAPACK=OFF \
-D WITH_MATLAB=OFF \
-D WITH_MFX=ON \
-D WITH_OPENCLAMDBLAS=OFF \
-D WITH_OPENCLAMDFFT=OFF \
-D WITH_OPENEXR=OFF \
-D WITH_OPENJPEG=OFF \
-D WITH_QUIRC=OFF \
-D WITH_TBB=OFF \
-D WITH_TIFF=OFF \
-D WITH_VTK=OFF \
-D WITH_WEBP=OFF \
-D CMAKE_USE_RELATIVE_PATHS=ON \
-D CMAKE_SKIP_INSTALL_RPATH=ON \
-D ENABLE_BUILD_HARDENING=ON \
-D ENABLE_CONFIG_VERIFICATION=ON \
-D ENABLE_PRECOMPILED_HEADERS=OFF \
-D ENABLE_CXX11=ON \
-D INSTALL_PDB=ON \
-D INSTALL_TESTS=ON \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D CMAKE_INSTALL_PREFIX=install \
-D OPENCV_SKIP_PKGCONFIG_GENERATION=ON \
-D OPENCV_SKIP_PYTHON_LOADER=OFF \
-D OPENCV_SKIP_CMAKE_ROOT_CONFIG=ON \
-D OPENCV_GENERATE_SETUPVARS=OFF \
-D OPENCV_BIN_INSTALL_PATH=bin \
-D OPENCV_INCLUDE_INSTALL_PATH=include \
-D OPENCV_LIB_INSTALL_PATH=lib \
-D OPENCV_CONFIG_INSTALL_PATH=cmake \
-D OPENCV_3P_LIB_INSTALL_PATH=3rdparty \
-D OPENCV_SAMPLES_SRC_INSTALL_PATH=samples \
-D OPENCV_DOC_INSTALL_PATH=doc \
-D OPENCV_OTHER_INSTALL_PATH=etc \
-D OPENCV_LICENSES_INSTALL_PATH=etc/licenses \
-D OPENCV_INSTALL_FFMPEG_DOWNLOAD_SCRIPT=ON \
-D BUILD_opencv_world=OFF \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_python3=ON \
-D PYTHON3_PACKAGES_PATH=install/python/python3 \
-D PYTHON3_LIMITED_API=ON \
-D HIGHGUI_PLUGIN_LIST=all \
-D OPENCV_PYTHON_INSTALL_PATH=python \
-D CPU_BASELINE=SSE4_2 \
-D OPENCV_IPP_GAUSSIAN_BLUR=ON \
-D WITH_OPENVINO=ON \
-D VIDEOIO_PLUGIN_LIST=ffmpeg,gstreamer,mfx \
-D CMAKE_EXE_LINKER_FLAGS=-Wl,--allow-shlib-undefined \
-D CMAKE_BUILD_TYPE=Release \
-S <OpenCV_ROOT_REPO_DIRECTORY> \
-B ~/build-opencv && \
cmake --build ~/build-opencv --parallel $(nproc) &&
cmake --install ~/build-opencv
OpenCV package is available at ~/build-opencv/install
directory.
To compile application that uses OpenCV, the following environment variables should be specified:
export OpenCV_DIR="<OpenCV_INSTALL_DIR>/cmake"
export LD_LIBRARY_PATH="<OpenCV_INSTALL_DIR>/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
export PYTHONPATH="<OpenCV_INSTALL_DIR>/python${PYTHONPATH:+:$PYTHONPATH}"
Building on RHEL
Prerequisites
- Install OpenVINO according to the instruction
- Install EPEL and RPM Fusion repositories using the following commands:
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-8.noarch.rpm
- Install the following packages:
The command
sudo yum install \
cmake \
gtk3-devel \
libmfx-devel \
gstreamer1-devel \
gstreamer1-plugins-base-devel \
ffmpeg-devel
Procedure
- Setup environment variables to detect OpenVINO:
source /opt/intel/openvino/setupvars.sh
- Copy OpenCV repository:
git clone --recurse-submodules https://github.com/opencv/opencv.git
- Create build directory and enter into it:
mkdir ~/build-opencv && cd ~/build-opencv
- Compile and install OpenCV:
The command
cmake \
-D BUILD_INFO_SKIP_EXTRA_MODULES=ON \
-D BUILD_EXAMPLES=OFF \
-D BUILD_JASPER=OFF \
-D BUILD_JAVA=OFF \
-D BUILD_JPEG=ON \
-D BUILD_APPS_LIST=version \
-D BUILD_opencv_apps=ON \
-D BUILD_opencv_java=OFF \
-D BUILD_OPENEXR=OFF \
-D BUILD_PNG=ON \
-D BUILD_TBB=OFF \
-D BUILD_WEBP=OFF \
-D BUILD_ZLIB=ON \
-D WITH_1394=OFF \
-D WITH_CUDA=OFF \
-D WITH_EIGEN=OFF \
-D WITH_GPHOTO2=OFF \
-D WITH_GSTREAMER=ON \
-D OPENCV_GAPI_GSTREAMER=OFF \
-D WITH_GTK_2_X=OFF \
-D WITH_IPP=ON \
-D WITH_JASPER=OFF \
-D WITH_LAPACK=OFF \
-D WITH_MATLAB=OFF \
-D WITH_MFX=OFF \
-D WITH_OPENCLAMDBLAS=OFF \
-D WITH_OPENCLAMDFFT=OFF \
-D WITH_OPENEXR=OFF \
-D WITH_OPENJPEG=OFF \
-D WITH_QUIRC=OFF \
-D WITH_TBB=OFF \
-D WITH_TIFF=OFF \
-D WITH_VTK=OFF \
-D WITH_WEBP=OFF \
-D CMAKE_USE_RELATIVE_PATHS=ON \
-D CMAKE_SKIP_INSTALL_RPATH=ON \
-D ENABLE_BUILD_HARDENING=ON \
-D ENABLE_CONFIG_VERIFICATION=ON \
-D ENABLE_PRECOMPILED_HEADERS=OFF \
-D ENABLE_CXX11=ON \
-D INSTALL_PDB=ON \
-D INSTALL_TESTS=ON \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D CMAKE_INSTALL_PREFIX=install \
-D OPENCV_SKIP_PKGCONFIG_GENERATION=ON \
-D OPENCV_SKIP_PYTHON_LOADER=OFF \
-D OPENCV_SKIP_CMAKE_ROOT_CONFIG=ON \
-D OPENCV_GENERATE_SETUPVARS=OFF \
-D OPENCV_BIN_INSTALL_PATH=bin \
-D OPENCV_INCLUDE_INSTALL_PATH=include \
-D OPENCV_LIB_INSTALL_PATH=lib \
-D OPENCV_CONFIG_INSTALL_PATH=cmake \
-D OPENCV_3P_LIB_INSTALL_PATH=3rdparty \
-D OPENCV_SAMPLES_SRC_INSTALL_PATH=samples \
-D OPENCV_DOC_INSTALL_PATH=doc \
-D OPENCV_OTHER_INSTALL_PATH=etc \
-D OPENCV_LICENSES_INSTALL_PATH=etc/licenses \
-D OPENCV_INSTALL_FFMPEG_DOWNLOAD_SCRIPT=ON \
-D BUILD_opencv_world=OFF \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_python3=ON \
-D PYTHON3_PACKAGES_PATH=install/python/python3 \
-D PYTHON3_LIMITED_API=ON \
-D HIGHGUI_PLUGIN_LIST=all \
-D OPENCV_PYTHON_INSTALL_PATH=python \
-D CPU_BASELINE=SSE4_2 \
-D OPENCV_IPP_GAUSSIAN_BLUR=ON \
-D WITH_OPENVINO=ON \
-D VIDEOIO_PLUGIN_LIST=ffmpeg,gstreamer \
-D CMAKE_EXE_LINKER_FLAGS=-Wl,--allow-shlib-undefined \
-D CMAKE_BUILD_TYPE=Release <OpenCV_ROOT_REPO_DIRECTORY> && \
make && cmake -P cmake_install.cmake
OpenCV package is available at ~/build-opencv/install
directory.
To compile application that uses OpenCV, the following environment variables should be specified:
export OpenCV_DIR="<OpenCV_INSTALL_DIR>/cmake"
export LD_LIBRARY_PATH="<OpenCV_INSTALL_DIR>/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
export PYTHONPATH="<OpenCV_INSTALL_DIR>/python${PYTHONPATH:+:$PYTHONPATH}"
Building on Windows
Prerequisites
- Install Microsoft Visual Studio
- Install cmake
- Install OpenVINO according to the instruction
- Install Intel® Media SDK for Windows
Procedure
- Setup environment variables to detect OpenVINO:
"C:\Program Files (x86)\IntelSWTools\openvino\setupvars.bat"
- Copy OpenCV repository:
git clone --recurse-submodules https://github.com/opencv/opencv.git
- Create build directory and enter into it:
mkdir "build-opencv" && cd "build-opencv"
- Setup MSVC environment by running
vcvars64.bat
- Compile and install OpenCV:
The command
cmake -G Ninja ^
-DBUILD_INFO_SKIP_EXTRA_MODULES=ON ^
-DBUILD_EXAMPLES=OFF ^
-DBUILD_JASPER=OFF ^
-DBUILD_JAVA=OFF ^
-DBUILD_JPEG=ON ^
-DBUILD_APPS_LIST=version ^
-DBUILD_opencv_apps=ON ^
-DBUILD_opencv_java=OFF ^
-DBUILD_OPENEXR=OFF ^
-DBUILD_PNG=ON ^
-DBUILD_TBB=OFF ^
-DBUILD_WEBP=OFF ^
-DBUILD_ZLIB=ON ^
-DWITH_1394=OFF ^
-DWITH_CUDA=OFF ^
-DWITH_EIGEN=OFF ^
-DWITH_GPHOTO2=OFF ^
-DWITH_GSTREAMER=OFF ^
-DOPENCV_GAPI_GSTREAMER=OFF ^
-DWITH_GTK_2_X=OFF ^
-DWITH_IPP=ON ^
-DWITH_JASPER=OFF ^
-DWITH_LAPACK=OFF ^
-DWITH_MATLAB=OFF ^
-DWITH_MFX=ON ^
-DWITH_OPENCLAMDBLAS=OFF ^
-DWITH_OPENCLAMDFFT=OFF ^
-DWITH_OPENEXR=OFF ^
-DWITH_OPENJPEG=OFF ^
-DWITH_QUIRC=OFF ^
-DWITH_TBB=OFF ^
-DWITH_TIFF=OFF ^
-DWITH_VTK=OFF ^
-DWITH_WEBP=OFF ^
-DCMAKE_USE_RELATIVE_PATHS=ON ^
-DCMAKE_SKIP_INSTALL_RPATH=ON ^
-DENABLE_BUILD_HARDENING=ON ^
-DENABLE_CONFIG_VERIFICATION=ON ^
-DENABLE_PRECOMPILED_HEADERS=OFF ^
-DENABLE_CXX11=ON ^
-DINSTALL_PDB=ON ^
-DINSTALL_TESTS=ON ^
-DINSTALL_C_EXAMPLES=ON ^
-DINSTALL_PYTHON_EXAMPLES=ON ^
-DCMAKE_INSTALL_PREFIX=install ^
-DOPENCV_SKIP_PKGCONFIG_GENERATION=ON ^
-DOPENCV_SKIP_PYTHON_LOADER=OFF ^
-DOPENCV_SKIP_CMAKE_ROOT_CONFIG=ON ^
-DOPENCV_GENERATE_SETUPVARS=OFF ^
-DOPENCV_BIN_INSTALL_PATH=bin ^
-DOPENCV_INCLUDE_INSTALL_PATH=include ^
-DOPENCV_LIB_INSTALL_PATH=lib ^
-DOPENCV_CONFIG_INSTALL_PATH=cmake ^
-DOPENCV_3P_LIB_INSTALL_PATH=3rdparty ^
-DOPENCV_SAMPLES_SRC_INSTALL_PATH=samples ^
-DOPENCV_DOC_INSTALL_PATH=doc ^
-DOPENCV_OTHER_INSTALL_PATH=etc ^
-DOPENCV_LICENSES_INSTALL_PATH=etc/licenses ^
-DOPENCV_INSTALL_FFMPEG_DOWNLOAD_SCRIPT=ON ^
-DBUILD_opencv_world=OFF ^
-DBUILD_opencv_python2=OFF ^
-DBUILD_opencv_python3=ON ^
-DPYTHON3_PACKAGES_PATH=install/python/python3 ^
-DPYTHON3_LIMITED_API=ON ^
-DOPENCV_PYTHON_INSTALL_PATH=python ^
-DCPU_BASELINE=SSE4_2 ^
-DOPENCV_IPP_GAUSSIAN_BLUR=ON ^
-DWITH_OPENVINO=ON ^
-DVIDEOIO_PLUGIN_LIST=mfx,msmf ^
-DCMAKE_BUILD_TYPE=Release <OpenCV_ROOT_REPO_DIRECTORY> &&
ninja &&
cmake --install .
OpenCV package is available at build-opencv/install
directory.
To compile application that uses OpenCV, the following environment variables should be specified:
set "OpenCV_DIR=<OpenCV_INSTALL_DIR>\cmake"
set "PATH=<OpenCV_INSTALL_DIR>\bin;%PATH%"
set "PYTHONPATH=<OpenCV_INSTALL_DIR>\python;%PYTHONPATH%"
Building on macOS
Prerequisites
- Install OpenVINO according to the instruction
- Install the following packages:
brew install cmake \
ninja \
ffmpeg \
gstreamer \
gst-devtools
python \
numpy
Procedure
- Setup environment variables to detect OpenVINO:
source /opt/intel/openvino/setupvars.sh
- Copy OpenCV repository:
git clone --recurse-submodules https://github.com/opencv/opencv.git
- Create build directory and enter into it:
mkdir "build-opencv" && cd "build-opencv"
- Compile and install OpenCV:
The command
cmake \
-G Ninja \
-DBUILD_INFO_SKIP_EXTRA_MODULES=ON \
-DBUILD_EXAMPLES=OFF \
-DBUILD_JASPER=OFF \
-DBUILD_JAVA=OFF \
-DBUILD_JPEG=ON \
-DBUILD_APPS_LIST=version \
-DBUILD_opencv_apps=ON \
-DBUILD_opencv_java=OFF \
-DBUILD_OPENEXR=OFF \
-DBUILD_PNG=ON \
-DBUILD_TBB=OFF \
-DBUILD_WEBP=OFF \
-DBUILD_ZLIB=ON \
-DWITH_1394=OFF \
-DWITH_CUDA=OFF \
-DWITH_EIGEN=OFF \
-DWITH_GPHOTO2=OFF \
-DWITH_GSTREAMER=ON \
-DOPENCV_GAPI_GSTREAMER=OFF \
-DWITH_GTK_2_X=OFF \
-DWITH_IPP=ON \
-DWITH_JASPER=OFF \
-DWITH_LAPACK=OFF \
-DWITH_MATLAB=OFF \
-DWITH_MFX=OFF \
-DWITH_OPENCLAMDBLAS=OFF \
-DWITH_OPENCLAMDFFT=OFF \
-DWITH_OPENEXR=OFF \
-DWITH_OPENJPEG=OFF \
-DWITH_QUIRC=OFF \
-DWITH_TBB=OFF \
-DWITH_TIFF=OFF \
-DWITH_VTK=OFF \
-DWITH_WEBP=OFF \
-DCMAKE_USE_RELATIVE_PATHS=ON \
-DCMAKE_SKIP_INSTALL_RPATH=ON \
-DENABLE_BUILD_HARDENING=ON \
-DENABLE_CONFIG_VERIFICATION=ON \
-DENABLE_PRECOMPILED_HEADERS=OFF \
-DENABLE_CXX11=ON \
-DINSTALL_PDB=ON \
-DINSTALL_TESTS=ON \
-DINSTALL_C_EXAMPLES=ON \
-DINSTALL_PYTHON_EXAMPLES=ON \
-DCMAKE_INSTALL_PREFIX=install \
-DOPENCV_SKIP_PKGCONFIG_GENERATION=ON \
-DOPENCV_SKIP_PYTHON_LOADER=OFF \
-DOPENCV_SKIP_CMAKE_ROOT_CONFIG=ON \
-DOPENCV_GENERATE_SETUPVARS=OFF \
-DOPENCV_BIN_INSTALL_PATH=bin \
-DOPENCV_INCLUDE_INSTALL_PATH=include \
-DOPENCV_LIB_INSTALL_PATH=lib \
-DOPENCV_CONFIG_INSTALL_PATH=cmake \
-DOPENCV_3P_LIB_INSTALL_PATH=3rdparty \
-DOPENCV_SAMPLES_SRC_INSTALL_PATH=samples \
-DOPENCV_DOC_INSTALL_PATH=doc \
-DOPENCV_OTHER_INSTALL_PATH=etc \
-DOPENCV_LICENSES_INSTALL_PATH=etc/licenses \
-DOPENCV_INSTALL_FFMPEG_DOWNLOAD_SCRIPT=ON \
-DBUILD_opencv_world=OFF \
-DBUILD_opencv_python2=OFF \
-DBUILD_opencv_python3=ON \
-DPYTHON3_PACKAGES_PATH=install/python/python3 \
-DPYTHON3_LIMITED_API=ON \
-DOPENCV_PYTHON_INSTALL_PATH=python \
-DCPU_BASELINE=SSE4_2 \
-DWITH_AVFOUNDATION=ON \
-DOPENCV_IPP_GAUSSIAN_BLUR=ON \
-DWITH_OPENVINO=ON \
-DVIDEOIO_PLUGIN_LIST=ffmpeg,gstreamer \
-DCMAKE_BUILD_TYPE=Release <OpenCV_ROOT_REPO_DIRECTORY> &&
ninja &&
cmake --install .
OpenCV package is available at build-opencv/install
directory.
To compile application that uses OpenCV, the following environment variables should be specified:
export OpenCV_DIR="<OpenCV_INSTALL_DIR>/cmake"
- Home
- Deep Learning in OpenCV
- Running OpenCV on Various Platforms
- OpenCV 5
- OpenCV 4
- OpenCV 3
- Development process
- OpenCV GSoC
- Archive
© Copyright 2024, OpenCV team