OpenCV met CUDA
Introductie
OpenCV (Open Source Computer Vision Library) is een open-source softwarebibliotheek ontworpen voor computer vision en beeldverwerking. Het biedt honderden geoptimaliseerde algoritmen voor taken zoals beeld- en videoanalyse, objectdetectie, gezichtsherkenning, feature-extractie, camerakalibratie en 3D-reconstructie.
JetPack wordt geleverd met vooraf geïnstalleerd OpenCV op reComputer-apparaten, maar de standaardversie bevat geen CUDA-acceleratie. Dit betekent dat hoewel u OpenCV kunt gebruiken voor standaard beeldverwerking, GPU-versnelde functies (zoals cv::cuda::GpuMat-bewerkingen, DNN-inferentie of realtime videoverwerking) niet zullen profiteren van de GPU van de Jetson.
Door OpenCV vanaf de broncode te compileren met CUDA-ondersteuning, kunt u de GPU gebruiken voor veel computer vision-taken, wat de prestaties aanzienlijk verbetert voor:
- Realtime videoverwerking (bijv. high-resolution camerastreams)
- Deep learning-inferentie met behulp van de OpenCV DNN-module
- Beeldtransformaties en filters die op de GPU kunnen worden geparalleliseerd
- Computer vision-pipelines in robotica of autonome systemen, waar lage latentie en hoge doorvoer kritiek zijn
Dus, OpenCV compileren met CUDA op Jetson stelt u in staat om de GPU volledig te benutten voor versnelde computer vision-workloads, waardoor toepassingen sneller en efficiënter worden.
Deze tutorial begeleidt u stap voor stap bij het installeren van de versie van OpenCV die CUDA ondersteunt.

Opmerking:De demo-omgeving is Jetpack 6.2
OpenCV compileren met CUDA
Stap 1. Verwijder de Python-pakketten en bibliotheekbestanden
pip list | grep opencv
pip3 uninstall opencv-python
sudo apt purge libopencv*
sudo apt autoremove
sudo apt updateStap 2. Installeer de vereiste afhankelijkheidsbibliotheken voor het latere compilatieproces.
Opmerking:De volgende afhankelijkheden zijn voor het Jetpack 6.2 Ubuntu 22.04-systeem. De namen van afhankelijkheden in andere omgevingen kunnen anders zijn!
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 gfortranStap 3. Download de officiële broncode.
Hier gebruiken we versie 4.10.0 van OpenCV en 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.0Stap 4. OpenCV bouwen en installeren.
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 Het inschakelen van FFMPEG-ondersteuning stelt OpenCV in staat om verschillende videoformaten te lezen en schrijven (avi, mp4, mkv). Als het is uitgeschakeld, kunnen alleen MJPEG/RAW-videostreams worden geopend.
-DWITH_CUDA=ON CUDA-acceleratie inschakelen
-DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda Geef het CUDA-installatiepad op
-DCUDA_ARCH_BIN=8.7 Geef de rekencapaciteit van het aangewezen doel-GPU op. Verschillende modules worden hieronder in de tabel vermeld.
Jetson-model GPU-architectuur SM-aantal Rekencapaciteit (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
Geef het pad van Python3, headerbestanden en dynamische bibliotheken op. Als er een virtuele omgeving is geïnstalleerd, moet u dit wijzigen naar het pad van de compiler van uw eigen virtuele omgeving.
Tijdens het CMake-proces wordt wat configuratie-informatie weergegeven.

Stap 5. Bouw het project en installeer.
#Het compilatieproces kan even duren! Wacht alstublieft geduldig!
make -j4
sudo make install
Stap 6. Installatie verifiëren.
Nadat de installatie is voltooid, opent u jtop. U zult zien dat "opencv with cuda" is veranderd naar "yes".
jtop
Test of Python OpenCV succesvol kan importeren. Gebruik het volgende Python-testscript:
#python
import cv2
import numpy as np
print("OpenCV version:", cv2.__version__)
# Controleren of OpenCV het CUDA-module heeft geïnstalleerd
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")
# De GPU-versnellingsfunctie testen
print("Creating test image...")
img = (np.random.rand(1080, 1920, 3) * 255).astype("uint8")
print("Test image shape:", img.shape)
# Naar GPU uploaden
gpu_img = cv2.cuda_GpuMat()
gpu_img.upload(img)
print("Image uploaded to GPU successfully!")
# Gaussiaanse vervaging op de GPU uitvoeren
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)
# Resultaat downloaden
result = gpu_result.download()
print("Gaussian blur completed on GPU!")
print("Result shape:", result.shape)
print("✅ OpenCV 4.10.0 met CUDA 12.6-ondersteuning werkt correct!")
else:
print("❌ Geen CUDA-apparaat gevonden of OpenCV niet gebouwd met CUDA.")