Jetson orin NX 16GB:opencv4.8.0使用CUDA加速
这篇博客我将解决编译 OpenCV 并启用 CUDA中的报错问题,并讲述使用opencv加速CUDA的方法。
在我上一篇博客中https://blog.csdn.net/2501_92183838/article/details/148774984?spm=1001.2014.3001.5501
写到了如何烧写系统及用jtop查看是否安装成功,但最后有4.8.0 with CUDA: NO(无法使用opencv加速)。这篇博客我将解决编译 OpenCV 并启用 CUDA中的报错问题,并讲述使用opencv加速CUDA的方法。

注意:我这里禁用掉了DNN、opencv_photo、opencv_cudaarithm、opencv_cudaimgproc和opencv_cudalegacy(笔者不需要这两个),如果需要的话这篇博客将解决不了你的问题。而且原因是这两者与CUDA12版本的不兼容,所以如果需要请下载老一点的版本比如CUDA11。
1. 卸载系统默认 OpenCV(可选)
sudo apt remove libopencv*
2. 安装编译依赖
sudo apt update
sudo apt install -y build-essential cmake git \
libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev \
python3-dev python3-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev \
libtiff-dev libdc1394-22-dev
3. 下载 OpenCV 和 opencv_contrib 源码
cd ~
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
cd opencv
git checkout 4.8.0
cd ../opencv_contrib
git checkout 4.8.0
4. 编译 OpenCV 并启用 CUDA
如果是不禁用DNN、opencv_photo、opencv_cudaarithm、opencv_cudaimgproc和opencv_cudalegacy,则代码如下(请opencv下载注意路径的不一样!!!!!!!!!!!!!!!!!!!!!!!!!):
cd ~/opencv
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D WITH_CUDA=ON \
-D WITH_CUBLAS=ON \
-D WITH_CUFFT=ON \
-D CUDA_ARCH_BIN=8.7 \
-D WITH_CUDNN=ON \
-D OPENCV_DNN_CUDA=ON\
-D OPENCV_DNN_CUDA_USE_CUDA4DNN=ON \
-D BUILD_opencv_dnn=ON \
-D BUILD_opencv_cudaarithm=ON \
-D BUILD_opencv_cudaimgproc=ON \
-D BUILD_opencv_photo=ON \
-D BUILD_opencv_cudalegacy=ON \
-D ENABLE_FAST_MATH=ON \
-D CUDA_FAST_MATH=ON \
-D WITH_CUBLAS=ON \
-D BUILD_EXAMPLES=ON \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D WITH_GSTREAMER=ON \
-D WITH_LIBV4L=ON \
-D PYTHON3_EXECUTABLE=$(which python3) ..
make -j$(nproc)
sudo make install
sudo ldconfig
这样会报错:(这些报错都是笔者在试了多次总结的所有报错)




这些原因都是CUDA12与cuDNN和opencv_photo不兼容导致的,所以读者请不要下载最新的版本!!!!
下面是禁用DNN、opencv_photo、opencv_cudaarithm、opencv_cudaimgproc和opencv_cudalegacy的代码:
先禁用掉之前的错误编译:
cd ~/opencv/build
rm -rf *
我这里orin NX算力CUDA_ARCH_BIN=8.7,这个可以在jtop里面看:(这里的YES是我之后截的屏)

然后编译:
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D WITH_CUDA=ON \
-D WITH_CUBLAS=ON \
-D WITH_CUFFT=ON \
-D CUDA_ARCH_BIN=8.7 \
-D WITH_CUDNN=ON \
-D OPENCV_DNN_CUDA=ON\
-D OPENCV_DNN_CUDA_USE_CUDA4DNN=ON \
-D BUILD_opencv_dnn=OFF \
-D BUILD_opencv_cudaarithm=OFF \
-D BUILD_opencv_cudaimgproc=OFF \
-D BUILD_opencv_photo=OFF \
-D BUILD_opencv_cudalegacy=OFF \
-D ENABLE_FAST_MATH=ON \
-D CUDA_FAST_MATH=ON \
-D WITH_CUBLAS=ON \
-D BUILD_EXAMPLES=ON \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D WITH_GSTREAMER=ON \
-D WITH_LIBV4L=ON \
-D PYTHON3_EXECUTABLE=$(which python3) ..
完成之后就使用如下代码启用多核进行编译:
make -j$(nproc)
这个过程需要比较长的时间,编译到100%之后build文件夹下面就有会很多文件,然后运行如下代码(必须在这个build文件夹下面运行):
sudo make install
sudo ldconfig
运行成功后就可以看到:(使用jtop)

这样就完成了Jetson orin NX 16GB opencv4.8.0使用CUDA加速。
更多推荐



所有评论(0)