简介
Nvidia Jetson 官方刷机流程结束以后,虽然安装了opencv,但是此版本是CPU版本,并且不包含Cpp版本。如果想要完整的OpenCV支持,需要从源码编译。本文介绍如何下载编译,并安装OPENCV库,并获得完整的CUDA和gstreamer支持。本教程适同时用于PC以及Jetson端。
下载
本教程使用的Jetpack版本是5.1.1dev,对应的OPENCV版本是4.5.4。去github下载对应的版本源码。要将opencv和contrib一并下载。下载后,将contrib解压在opencv目录下。
https://github.com/opencv/opencv/releases
https://github.com/opencv/opencv_contrib/tags?after=3.4.17
编译安装
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.5.4/modules \
-D WITH_CUDA=1 \
-D BUILD_opencv_python3=1 \
-D BUILD_opencv_python2=0 \
-D WITH_FFMPEG=1 \
-D WITH_V4L=ON \
-D WITH_QT=ON \
-D WITH_OPENGL=ON \
-D ENABLE_FAST_MATH=1 \
-D CUDA_FAST_MATH=1 \
-D WITH_CUBLAS=1 \
-D OPENCV_GENERATE_PKGCONFIG=1 \
-D WITH_GTK_2_X=ON \
-D WITH_GSTREAMER=ON \
..
由于系统中默认没有安装python2,所以这一选项关闭。WITH_GSTREAMER=ON
打开gstreamer功能。WITH_CUDA=1
与CUDA进行编译。OPENCV_EXTRA_MODULES_PATH
指定contrib包路径,个人习惯放在opencv项目目录下。配置完成后编译:
make -j16
如果过编译顺利,则进行安装
sudo make install
验证
- Jetson专有
sudo jtop之后,在INFO标签栏opencv一栏显示绿色Yes。
- 通用
进入python解释器,验证opencv是否包含cuda设备:
import cv2
print(cv2.cuda.printCudaDeviceInfo(0))
如果安装成功,则会显示cuda版本以及硬件参数在内的十分详细的信息。如果失败则会如下所示:
>>> print(cv2.cuda.printCudaDeviceInfo(0))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
cv2.error: OpenCV(4.9.0) /io/opencv/modules/core/include/opencv2/core/private.cuda.hpp:106: error: (-216:No CUDA support) The library is compiled without CUDA support in function 'throw_no_cuda'
>>>