Jetson开发板自带的OpenCV不支持CUDA加速,所以本文将阐述如何在Jetson平台上安装并配置支持CUDA加速的OpenCV。
笔者在Jetson平台上,仅安装OpenCV可能会导致在编译和运行部分ROS(机器人操作系统)包时遇到警告和错误,主要原因可能是缺少了cv_bridge
这一组件。cv_bridge
是ROS中用于在OpenCV图像和ROS图像消息之间进行转换的库。
一 OpenCV 安装
1.下载 opencv 源码,选择所需要的版本 opencv,相应的扩展 opencv_contrib,opencv下载地址,opencv_contrib下载地址。
2.本文以opencv 4.9.0 版本为例,将 opencv 4.9.0 以及相应的扩展 opencv_contrib 4.9.0 下载到“ ~/Documents ”目录下,编译前确定 opencv 的安装路径,本文的安装路径是
CMAKE_INSTALL_PREFIX=/usr/local/
3.用jtop命令,确定 Jetson Orin NX 的算力为 8.7。INFO页面查看CUDA Arch BIN
jtop
4.进入安装文件路径
cd ~/Documents/opencv-4.9.0/
mkdir build && cd build
编译OpenCV时需要用外网安装一些依赖,这里下载一个代理工具 proxychains执行以下命令:
sudo apt-get install proxychains
5.预编译 opencv 4.9.0 及其扩展模块 opencv_contrib-4.9.0,生成 Makefiles 文件。其中注意CMAKE_INSTALL_PREFIX , OPENCV_EXTRA_MODULES_PATH ,CUDA_ARCH_BIN
proxychains cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local/ \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.9.0/modules \
-D WITH_CUDA=ON \
-D CUDA_ARCH_BIN=8.7 \
-D CUDA_ARCH_PTX="" \
-D ENABLE_FAST_MATH=ON \
-D CUDA_FAST_MATH=ON \
-D WITH_CUBLAS=ON \
-D WITH_LIBV4L=ON \
-D WITH_GSTREAMER=ON \
-D WITH_GSTREAMER_0_10=OFF \
-D WITH_QT=ON \
-D WITH_OPENGL=ON \
-D CUDA_NVCC_FLAGS="--expt-relaxed-constexpr" \
-D WITH_TBB=ON \
..
6.安装,注意cpu核数,推荐-j4
sudo make install -j4
7.查看是否安装成功:在jtop的INFO页面查看。
二 安装 cv_bridge 库
cv_bridge是在ROS图像消息和OpenCV图像之间进行转换的一个功能包,很多功能包都需要。
1.下载对应版本的 cv_bridge
git clone https://github.com/ros-perception/vision_opencv.git -b ${ROS_DISTRO}
2.进入 cv_bridge 目录,修改 CMakeLists.txt 文件中的 OpenCV 对应的版本号(选做)
3.编译的时候指定安装路径 ( ROS 安装的目录下:/opt/ros/${ROS_DISTRO} )
cd vision_opencv/cv_bridge
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=/opt/ros/${ROS_DISTRO} ..
sudo make install
三 参考