OpenCV avec CUDA
Introduction
OpenCV (Open Source Computer Vision Library) est une bibliothèque de logiciels open-source conçue pour la vision par ordinateur et le traitement d'images. Elle fournit des centaines d'algorithmes optimisés pour des tâches telles que l'analyse d'images et de vidéos, la détection d'objets, la reconnaissance faciale, l'extraction de caractéristiques, l'étalonnage de caméras et la reconstruction 3D.
JetPack est livré avec OpenCV préinstallé sur les appareils reComputer, mais la version par défaut ne comprend pas l'accélération CUDA. Cela signifie que bien que vous puissiez utiliser OpenCV pour le traitement d'images standard, les fonctions accélérées par GPU (comme les opérations cv::cuda::GpuMat, l'inférence DNN ou le traitement vidéo en temps réel) ne bénéficieront pas du GPU du Jetson.
En compilant OpenCV à partir du code source avec support CUDA, vous pouvez exploiter le GPU pour de nombreuses tâches de vision par ordinateur, ce qui améliore considérablement les performances pour:
- Le traitement vidéo en temps réel (par exemple, les flux de caméra haute résolution)
- L'inférence d'apprentissage profond en utilisant le module DNN d'OpenCV
- Les transformations d'images et les filtres qui peuvent être parallélisés sur le GPU
- Les pipelines de vision par ordinateur en robotique ou systèmes autonomes, où une faible latence et un haut débit sont critiques
Ainsi, compiler OpenCV avec CUDA sur Jetson vous permet d'utiliser pleinement le GPU pour les charges de travail de vision par ordinateur accélérées, rendant les applications plus rapides et plus efficaces.
Ce tutoriel vous guidera étape par étape sur la façon d'installer la version d'OpenCV qui supporte CUDA.

Remarque:L'environnement de démonstration est Jetpack 6.2
Compiler OpenCV avec CUDA
Étape 1. Désinstallez les paquets Python et les fichiers de bibliothèque
pip list | grep opencv
pip3 uninstall opencv-python
sudo apt purge libopencv*
sudo apt autoremove
sudo apt updateÉtape 2. Installez les bibliothèques de dépendances requises pour le processus de compilation ultérieur.
Remarque:Les dépendances suivantes sont pour le système Jetpack 6.2 Ubuntu 22.04. Les noms des dépendances dans d'autres environnements peuvent être différents!
sudo apt install -y build-essential checkinstall cmake pkg-config yasm git gfortran
sudo apt update
sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt install -y libjpeg8-dev libpng-dev libtiff5-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libv4l-dev libdc1394-dev libopenjp2-7-dev
sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgtk2.0-dev libtbb-dev libatlas-base-dev libfaac-dev libmp3lame-dev libtheora-dev libvorbis-dev libxvidcore-dev libopencore-amrnb-dev libopencore-amrwb-dev x264 v4l-utils
sudo apt install -y \
python3-dev python3-numpy \
libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev \
libavcodec-dev libavformat-dev libswscale-dev libv4l-dev \
libxvidcore-dev libx264-dev libgtk-3-dev libcanberra-gtk3-dev \
libatlas-base-dev gfortranÉtape 3. Téléchargez le code source officiel.
Ici, nous utilisons la version 4.10.0 de OpenCV et OpenCV_contrib.

wget https://github.com/opencv/opencv/archive/refs/tags/4.10.0.zip
unzip 4.10.0.zip
rm 4.10.0.zip
wget https://github.com/opencv/opencv_contrib/archive/refs/tags/4.10.0.zip
unzip 4.10.0.zip -d opencv-4.10.0/
cd opencv-4.10.0Étape 4. Construire et installer OpenCV.
mkdir build
cd build
export PATH=/usr/local/cuda-12.6/bin:$PATH && export LD_LIBRARY_PATH=/usr/local/cuda-12.6/lib64:$LD_LIBRARY_PATH
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DOPENCV_ENABLE_NONFREE=ON \
-DWITH_FFMPEG=ON \
-DWITH_CUDA=ON \
-DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-12.6 \
-DCUDA_ARCH_BIN=8.7 \
-DCUDA_ARCH_PTX="" \
-DENABLE_FAST_MATH=ON \
-DCUDA_FAST_MATH=ON \
-DWITH_CUBLAS=ON \
-DOPENCV_GENERATE_PKGCONFIG=ON \
-DBUILD_opencv_python2=OFF \
-DBUILD_opencv_python3=ON \
-DPYTHON3_EXECUTABLE=$(which python3) \
-DPYTHON3_INCLUDE_DIR=$(python3 -c "from sysconfig import get_paths as gp; print(gp()['include'])") \
-DPYTHON3_LIBRARY=$(python3 -c "import sysconfig; print(sysconfig.get_config_var('LIBDIR') + '/libpython' + sysconfig.get_python_version() + '.so')") \
-DOPENCV_EXTRA_MODULES_PATH=/home/seeed/Downloads/opencv_contrib/modules \
..
-DWITH_FFMPEG=ON Activer le support FFMPEG permet à OpenCV de lire et écrire divers formats vidéo (avi, mp4, mkv). S'il est désactivé, seuls les flux vidéo MJPEG/RAW peuvent être accédés.
-DWITH_CUDA=ON Activer l'accélération CUDA
-DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda Spécifier le chemin d'installation de CUDA
-DCUDA_ARCH_BIN=8.7 Spécifier la puissance de calcul du GPU cible désigné. Différents modules sont listés dans le tableau ci-dessous.
Modèle Jetson Architecture GPU SM Count Capacité de Calcul (CUDA_ARCH_BIN) Jetson Nano Maxwell 128 5.3 Jetson TX1 Maxwell 256 5.3 Jetson TX2 Pascal 256 6.2 Jetson Xavier NX Volta 384 7.2 Jetson AGX Xavier Volta 512 7.2 Jetson Orin Nano Ampere 512 8.7 Jetson Orin NX Ampere 1024 8.7 Jetson AGX Orin Ampere 2048 8.7 -DPYTHON3_EXECUTABLE=$(which python3) -DPYTHON3_INCLUDE_DIR -DPYTHON3_LIBRARY
Spécifiez le chemin de Python3, les fichiers d'en-tête et les bibliothèques dynamiques. Si un environnement virtuel est installé, vous devez le modifier vers le chemin du compilateur de votre propre environnement virtuel.
Pendant le processus CMake, certaines informations de configuration sont affichées.

Étape 5. Construire le projet et installer.
#Le processus de compilation peut prendre un certain temps! Veuillez attendre patiemment!
make -j4
sudo make install
Étape 6. Vérifier l'installation.
Une fois l'installation terminée, ouvrez jtop. Vous verrez que "opencv with cuda" a changé en "yes".
jtop
Testez si Python peut importer OpenCV avec succès. Utilisez le script de test Python suivant:
#python
import cv2
import numpy as np
print("OpenCV version:", cv2.__version__)
# Vérifier si OpenCV a le module CUDA installé
print("CUDA available in OpenCV:", cv2.cuda.getCudaEnabledDeviceCount() > 0)
if cv2.cuda.getCudaEnabledDeviceCount() > 0:
print("Number of CUDA devices:", cv2.cuda.getCudaEnabledDeviceCount())
cv2.cuda.setDevice(0)
print("CUDA device set to 0")
# Tester la fonction d'accélération GPU
print("Creating test image...")
img = (np.random.rand(1080, 1920, 3) * 255).astype("uint8")
print("Test image shape:", img.shape)
# Télécharger sur GPU
gpu_img = cv2.cuda_GpuMat()
gpu_img.upload(img)
print("Image uploaded to GPU successfully!")
# Effectuer le flou gaussien sur le GPU
print("Performing Gaussian blur on GPU...")
gaussian = cv2.cuda.createGaussianFilter(gpu_img.type(), gpu_img.type(), (15, 15), 0)
gpu_result = gaussian.apply(gpu_img)
# Télécharger le résultat
result = gpu_result.download()
print("Gaussian blur completed on GPU!")
print("Result shape:", result.shape)
print("✅ OpenCV 4.10.0 avec support CUDA 12.6 fonctionne correctement!")
else:
print("❌ Aucun appareil CUDA trouvé ou OpenCV non compilé avec CUDA.")