OpenCV mit CUDA
Einführung
OpenCV (Open Source Computer Vision Library) ist eine Open-Source-Softwarebibliothek für Computer Vision und Bildverarbeitung. Sie bietet Hunderte von optimierten Algorithmen für Aufgaben wie Bild- und Videoanalyse, Objekterkennung, Gesichtserkennung, Merkmalsextraktion, Kamerakalibrierung und 3D-Rekonstruktion.
JetPack wird mit vorinstalliertem OpenCV auf reComputer-Geräten ausgeliefert, aber die Standardversion enthält keine CUDA-Beschleunigung. Das bedeutet, dass Sie OpenCV zwar für Standard-Bildverarbeitung verwenden können, GPU-beschleunigte Funktionen (wie cv::cuda::GpuMat-Operationen, DNN-Inferenz oder Echtzeit-Videoverarbeitung) nicht von der GPU des Jetson profitieren werden.
Durch das Kompilieren von OpenCV aus dem Quellcode mit CUDA-Unterstützung können Sie die GPU für viele Computer-Vision-Aufgaben nutzen, was die Leistung erheblich verbessert für:
- Echtzeit-Videoverarbeitung (z.B. hochauflösende Kamera-Streams)
- Deep-Learning-Inferenz mit dem OpenCV DNN-Modul
- Bildtransformationen und Filter, die auf der GPU parallelisiert werden können
- Computer-Vision-Pipelines in Robotik oder autonomen Systemen, wo niedrige Latenz und hoher Durchsatz kritisch sind
Das Kompilieren von OpenCV mit CUDA auf Jetson ermöglicht es Ihnen, die GPU für beschleunigte Computer-Vision-Workloads vollständig zu nutzen, was Anwendungen schneller und effizienter macht.
Dieses Tutorial führt Sie Schritt für Schritt durch die Installation der Version von OpenCV, die CUDA unterstützt.

Hinweis:Die Demonstrationsumgebung ist Jetpack 6.2
OpenCV mit CUDA kompilieren
Schritt 1. Deinstallieren Sie die Python-Pakete und Bibliotheksdateien
pip list | grep opencv
pip3 uninstall opencv-python
sudo apt purge libopencv*
sudo apt autoremove
sudo apt updateSchritt 2. Installieren Sie die erforderlichen Abhängigkeitsbibliotheken für den后续Kompilierungsprozess.
Hinweis:Die folgenden Abhängigkeiten gelten für das Jetpack 6.2 Ubuntu 22.04-System. Die Namen der Abhängigkeiten in anderen Umgebungen können unterschiedlich sein!
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 gfortranSchritt 3. Laden Sie den offiziellen Quellcode herunter.
Hier verwenden wir Version 4.10.0 von OpenCV und 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.0Schritt 4. OpenCV erstellen und installieren.
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 Das Aktivieren der FFMPEG-Unterstützung ermöglicht OpenCV das Lesen und Schreiben verschiedener Videoformate (avi, mp4, mkv). Wenn es deaktiviert ist, können nur MJPEG/RAW-Videostreams zugegriffen werden.
-DWITH_CUDA=ON CUDA-Beschleunigung aktivieren
-DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda CUDA-Installationspfad angeben
-DCUDA_ARCH_BIN=8.7 Rechenleistung der designated Ziel-GPU angeben. Verschiedene Module sind in der folgenden Tabelle aufgeführt.
Jetson-Modell GPU-Architektur SM-Anzahl Compute-Kapazität (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
Geben Sie den Pfad von Python3, Header-Dateien und dynamischen Bibliotheken an. Wenn eine virtuelle Umgebung installiert ist, müssen Sie diese auf den Pfad des Compilers Ihrer eigenen virtuellen Umgebung ändern.
Während des CMake-Prozesses werden einige Konfigurationsinformationen angezeigt.

Schritt 5. Das Projekt erstellen und installieren.
#Der Kompilierungsprozess kann eine Weile dauern! Bitte warten Sie geduldig!
make -j4
sudo make install
Schritt 6. Installation überprüfen.
Nachdem die Installation abgeschlossen ist, öffnen Sie jtop. Sie werden sehen, dass "opencv with cuda" sich zu "yes" geändert hat.
jtop
Testen Sie, ob Python OpenCV erfolgreich importieren kann. Verwenden Sie das folgende Python-Testskript:
#python
import cv2
import numpy as np
print("OpenCV version:", cv2.__version__)
# Überprüfen, ob OpenCV mit dem CUDA-Modul installiert wurde
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")
# GPU-Beschleunigungsfunktion testen
print("Creating test image...")
img = (np.random.rand(1080, 1920, 3) * 255).astype("uint8")
print("Test image shape:", img.shape)
# Auf GPU hochladen
gpu_img = cv2.cuda_GpuMat()
gpu_img.upload(img)
print("Image uploaded to GPU successfully!")
# Gaußsche Unschärfe auf der GPU durchführen
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)
# Ergebnis herunterladen
result = gpu_result.download()
print("Gaussian blur completed on GPU!")
print("Result shape:", result.shape)
print("✅ OpenCV 4.10.0 mit CUDA 12.6-Unterstützung funktioniert korrekt!")
else:
print("❌ Kein CUDA-Gerät gefunden oder OpenCV wurde nicht mit CUDA erstellt.")