Skip to content

Instantly share code, notes, and snippets.

@hstm
Created November 23, 2020 10:16
Show Gist options
  • Save hstm/2f1f1cdb31b1bd3c958e5fed6fdbc143 to your computer and use it in GitHub Desktop.
Save hstm/2f1f1cdb31b1bd3c958e5fed6fdbc143 to your computer and use it in GitHub Desktop.
CMake OpenCV with CUDA on Windows 10
OpenCV with CUDA
OpenCV 4.3.0 and OpenCV Contrib 4.3.0
Visual Studio 2019
CUDA 10.2
Python 3.7
CMake 3.17
NVIdia Codec SDK https://developer.nvidia.com/nvidia-video-codec-sdk
Intel MKL version 2019 Update 5 (2019.0.5.068) and TBB version 2019 Update 8 (2019.0.5.068)
Intel Media SDK MediaSDK2019R1
Ninja 1.10
// Classic CMake build
// generic part
"C:\Program Files (x86)\IntelSWTools\compilers_and_libraries\windows\tbb\bin\tbbvars.bat" intel64
set "openCvSource=D:/opencv-4.3.0"
set "openCVExtraModules=D:/opencv_contrib-4.3.0/modules"
set "openCvBuild=%openCvSource%\build"
set "buildType=Release"
set "generator=Visual Studio 16 2019"
set "pathToAnaconda=C:/Users/hstm/anaconda3"
set "pyVer=37"
// configure with Intel MKL, TBB, VTK, OpenCV non-free, and Eigen
"C:\Program Files\CMake\bin\cmake.exe" -B"%openCvBuild%/" -H"%openCvSource%/" -G"%generator%" -DCMAKE_BUILD_TYPE=%buildType% -DOPENCV_EXTRA_MODULES_PATH="%openCVExtraModules%/" ^
-DINSTALL_TESTS=ON -DINSTALL_C_EXAMPLES=ON -DBUILD_EXAMPLES=ON ^
-DBUILD_opencv_world=ON ^
-DWITH_CUDA=ON -DCUDA_TOOLKIT_ROOT_DIR="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.2" -DCUDA_FAST_MATH=ON -DWITH_CUBLAS=ON -DCUDA_ARCH_PTX=7.5 -DWITH_NVCUVID=ON ^
-DWITH_OPENGL=ON -DWITH_VTK=ON -DVTK_DIR=D:/VTK-8.2.0-bin/bin/Release ^
-DWITH_MFX=ON -DMKL_USE_MULTITHREAD=ON -DMKL_WITH_TBB=ON -DWITH_TBB=ON -DOPENCV_ENABLE_NONFREE=ON -DBUILD_opencv_rgbd=OFF ^
-DWITH_EIGEN=ON -DEIGEN_INCLUDE_PATH=D:/eigen-3.3.7 ^
-DBUILD_opencv_python3=ON -DPYTHON3_INCLUDE_DIR=%pathToAnaconda%/include -DPYTHON3_LIBRARY=%pathToAnaconda%/libs/python%pyVer%.lib ^
-DPYTHON3_EXECUTABLE=%pathToAnaconda%/python.exe -DPYTHON3_NUMPY_INCLUDE_DIRS=%pathToAnaconda%/lib/site-packages/numpy/core/include ^
-DPYTHON3_PACKAGES_PATH=%pathToAnaconda%/Lib/site-packages/ -DOPENCV_SKIP_PYTHON_LOADER=ON
// with vcpkg
-DCMAKE_TOOLCHAIN_FILE=C:/Users/hstm/bin/vcpkg-2020.01/scripts/buildsystems/vcpkg.cmake ^
// stripped build
-DBUILD_opencv_cudaarithm=OFF -DBUILD_opencv_cudabgsegm=OFF -DBUILD_opencv_cudafeatures2d=OFF -DBUILD_opencv_cudafilters=OFF -DBUILD_opencv_cudaimgproc=OFF ^
-DBUILD_opencv_cudalegacy=OFF -DBUILD_opencv_cudaobjdetect=OFF -DBUILD_opencv_cudaoptflow=OFF -DBUILD_opencv_cudastereo=OFF -DBUILD_opencv_cudawarping=OFF ^
-DBUILD_opencv_cudacodec=OFF ^
// build
"C:\Program Files\CMake\bin\cmake.exe" --build %openCvBuild% --target INSTALL --config Debug
// Ninja build
// generic part
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Auxiliary\Build\vcvars64.bat"
set "ninjaPath=C:/Users/hstm/bin/ninja-win"
set path=%ninjaPath%;%path%
set "openCvSource=D:/opencv-4.3.0"
set "openCVExtraModules=D:/opencv_contrib-4.3.0/modules"
set "openCvBuild=%openCvSource%\build"
set "buildType=Release"
set "generator=Ninja"
set "pathToAnaconda=C:/Users/hstm/anaconda3/envs/opencv_cuda"
set "pyVer=37"
"C:\Program Files\CMake\bin\cmake.exe" -B"%openCvBuild%/" -H"%openCvSource%/" -G"%generator%" -DCMAKE_BUILD_TYPE=%buildType% -DOPENCV_EXTRA_MODULES_PATH="%openCVExtraModules%/" ^
-DINSTALL_TESTS=ON -DINSTALL_C_EXAMPLES=ON -DBUILD_EXAMPLES=ON ^
-DBUILD_opencv_world=ON ^
-DWITH_CUDA=ON -DCUDA_TOOLKIT_ROOT_DIR="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.2" -DCUDA_FAST_MATH=ON -DWITH_CUBLAS=ON -DCUDA_ARCH_PTX=7.5 -DWITH_NVCUVID=ON ^
-DWITH_OPENGL=ON ^
-DWITH_MFX=ON ^
-DBUILD_opencv_python3=ON -DPYTHON3_INCLUDE_DIR=%pathToAnaconda%/include ^
-DPYTHON3_LIBRARY=%pathToAnaconda%/libs/python%pyVer%.lib -DPYTHON3_EXECUTABLE=%pathToAnaconda%/python.exe ^
-DPYTHON3_NUMPY_INCLUDE_DIRS=%pathToAnaconda%/lib/site-packages/numpy/core/include ^
-DPYTHON3_PACKAGES_PATH=%pathToAnaconda%/Lib/site-packages/ -DOPENCV_SKIP_PYTHON_LOADER=ON
// -DOPENCV_ENABLE_NONFREE=ON -DBUILD_opencv_rgbd=OFF seem to have some conflicts (maybe with NVidia encoder?)
// build
"C:\Program Files\CMake\bin\cmake.exe" --build %openCvBuild% --target install
// Python test
set path=%openCvBuild%\install\x64\vc16\bin;%path%
python -c "import cv2; print(f'OpenCV: {cv2.__version__} for python installed and working')"
// CUDA test
"%openCvBuild%\install\x64\vc16\bin\opencv_perf_cudaarithm.exe" --gtest_filter=Sz_Type_Flags_GEMM.GEMM/29
vcpkg config:
At the vcpkg directory prompt, install vtk, eigen3, ceres-solver, gflags, glog, hdf5, ffmpeg with the following command:
vcpkg install vtk:x64-windows eigen3:x64-windows gflags:x64-windows glog:x64-windows ceres:x64-windows hdf5:x64-windows ffmpeg:x64-windows
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment