How to build OpenCV with Cuda and cuDNN support in Windows – 2022

Machine Learning Projects

Hey guys, in this blog we will see how we can build OpenCV with Cuda and cuDNN support in Windows. This process can be very tricky and tedious if doing it for the very first time. So without any further due, let’s do it.

  • These are the versions we will be installing.
  • Opencv 4.5.5
  • Opencv-contrib 4.5.5
  • Visual Studio 2019

Step 0 – Uninstall Python and Anaconda.

  • You need to uninstall previous installations of python and Anaconda.
  • Reinstall Anaconda from here.
  • Install NumPy from the terminal using pip install numpy.

Step 1 – Download Cmake

https://cmake.org/download/

build opencv with cuda

Step 2 – Download Visual Studio

  • We will download Visual Studio 2019.
  • Install “Desktop development with C++“.
build opencv with cuda

RESTART YOUR COMPUTER

Step 3 – Download OpenCV

build opencv with cuda

Step 4 – Download opencv-contrib

build opencv with cuda

Step 5 – Extract files.

  • Extract the OpenCV zip and OpenCV-contrib zip.
  • Create an empty folder named build.
build opencv with cuda

Step 6 – Run Cmake GUI.

  • In Where is the source code, Select the main opencv extracted folder.
  • In Where to build the binaries, Select the empty build folder we created above.
build opencv with cuda
  • Click on Configure button.
  • I have Visual Studio 2019 installed, so I selected Visual Studio 16 2019.
  • And in the Optional platform for generator, select x64.
build opencv with cuda
  • Click on Finish and it will start configuring.
  • Once done you will see a screen like this.
build opencv with cuda

Now search the following

  • WITH_CUDA and tick/check it.
build opencv with cuda
  • OPENCV_DNN_CUDA and tick/check it.
build opencv with cuda
  • ENABLE_FAST_MATH and tick/check it.
build opencv with cuda
  • OPENCV_EXTRA_MODULES_PATH and browse to the module folder in opencv-contrib we extracted in step 5.
build opencv with cuda
  • And now again hit on Configure button.
build opencv with cuda
  • Once you see, Configuring done, check CUDA_FAST_MATH also.
build opencv with cuda
  • Now go to this link and check your compute capability against your graphic card.
  • Mine is Nvidia GTX 1050Ti, so my arch is 6.1.
build opencv with cuda
  • In the CMake window, search for CUDA_ARCH_BIN.
  • You will see something like this.
build opencv with cuda
  • Delete all values except your Compute Capability.
build opencv with cuda
  • Again hit on Configure button for the final time.
  • Once done, finally hit the Generate button.
build opencv with cuda
  • Now you will see a lot of files in your build folder.
build opencv with cuda

Step 7 – Build OpenCV with CUDA

  • We will have a file like this OpenCV.sln.
build opencv with cuda
  • Now open the CMD Terminal in Administrator mode from start menu.
  • Change directory to your build folder usind cd command and run OpenCV.sln.
  • It will open up Visual Studio.
build opencv with cuda
  • Once Visual Studio is opened, change Debug to Release.
build opencv with cuda
build opencv with cuda
  • Now in the right sidebar, open the CMake Targets dropdown and you will see ALL_BUILD.
  • Right click on it and select build and it will start building our binaries.
  • This process will take some time.
build opencv with cuda
  • Once done it will prompt this.
build opencv with cuda
  • Now right click on INSTALL and build.
build opencv with cuda

Step 8 – Check OpenCV Installation.

  • Congratulations, you have successfully installed OpenCV with Cuda support.
  • Now let’s check if python is detecting cv2 or not.
  • Open cmd and paste the following commands.
python
import cv2
cv2.__version__
cv2.cuda.getCudaEnabledDeviceCount()
build opencv with cuda
  • Now let’s check if cv2 is detecting CUDA or not.
  • Create a test.py file and paste the following code in it and run it.
import numpy as np
import cv2 as cv
import time


npTmp = np.random.random((1024, 1024)).astype(np.float32)

npMat1 = np.stack([npTmp,npTmp],axis=2)
npMat2 = npMat1

cuMat1 = cv.cuda_GpuMat()
cuMat2 = cv.cuda_GpuMat()
cuMat1.upload(npMat1)
cuMat2.upload(npMat2)
start_time = time.time()
cv.cuda.gemm(cuMat1, cuMat2,1,None,0,None,1)
print("CUDA --- %s seconds ---" % (time.time() - start_time))
start_time = time.time()

cv.gemm(npMat1,npMat2,1,None,0,None,1)
print("CPU --- %s seconds ---" % (time.time() - start_time))
build opencv with cuda


NOTE – If you are facing the below error while running cv2, follow these steps.

Machine Learning Projects
  • Download this file, extract it in a folder and copy the path to the folder where zlibwapi.dll file is located.
  • I extracted it in the opencv_build folder, you can extract it anywhere else also.
Machine Learning Projects
  • Now open the start menu and search env, then open “Edit the system Environment Variable”, click on Environment Variables…, then double click on the Path under System variables Section.
Machine Learning Projects
  • Click on New and paste the path you copied above.
Machine Learning Projects
  • And then simply click OK, OK and OK.

And now everything should work like charm!!!

So this is how you will install build OpenCV with CUDA and cuDNN support in windows, thanks for reading it and I hope you are taking something with you after reading this and till the next time ?…

Check out my other machine learning projectsdeep learning projectscomputer vision projectsNLP projectsFlask projects at machinelearningprojects.net

2 thoughts on “How to build OpenCV with Cuda and cuDNN support in Windows – 2022”

  1. Can I delete the build folder after install? it’s taking up a lot of space (20GB) and I don’t have that much space. It doesn’t seem that important after installation because if I install the non-cuda OpenCV it doesn’t take up that much space and I doubt that Cuda support is that big.

    1. Although I am not sure about that, you can try this…
      Move that folder to a Pen Drive or a Hard disk and see if cv2 is running properly.
      If it’s running properly, then you are good to go else move that folder back to its place.

Leave a Comment

Your email address will not be published.