Orin安装OpenCV4.6.0
描述
使用jetpack对Nvidia AGX Orin刷机后,系统自带的OpenCV4.5.6位于/usr/include中,此版本没有CUDA加速,因此将其卸载并使用源码编译OpenCV4.6.0(带有CUDA)。非原创,仅做配置流程记录。
正式流程
- 卸载原有OpenCV
sudo apt purge libopencv*
sudo apt autoremove
sudo apt update
- 安装OpenCV依赖项
sudo apt-get install build-essential \
libavcodec-dev \
libavformat-dev \
libavutil-dev \
libeigen3-dev \
libglew-dev \
libgtk2.0-dev \
libgtk-3-dev \
libjpeg-dev \
libpostproc-dev \
libswscale-dev \
libtbb-dev \
libtiff5-dev \
libv4l-dev \
libxvidcore-dev \
libx264-dev \
qt5-default \
zlib1g-dev \
libavresample-dev \
gstreamer1.0-plugins-bad \
pkg-config
- 下载opencv 4.6.0 以及相应的扩展 opencv_contrib 4.6.0,解压并移动到/usr/lib路径下,两个文件夹并列
- 在
~/.bashrc
中注释掉所有与Anaconda3相关的行(安装OpenCV成功后再复原),echo $PATH显示没有Anaconda3表示成功 - 进入opencv4.6.0文件夹中,
mkdir build && cd build
- 编译
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local/ \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.6.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 \
-D OPENCV_GENERATE_PKGCONFIG=ON \
..
其中:
CMAKE_INSTALL_PREFIX=/usr/local/
为OpenCV库安装地址
OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.6.0/modules
为扩展模块所在路径
CUDA_ARCH_BIN=8.7
为 GPU 算力,可在Nvidia GPU 算力查看
OPENCV_GENERATE_PKGCONFIG=ON
表示生成opencv4.pc文件,从而使得pkg-config软件能够找到OpenCV
最终make后的结果
7.安装OpenCV,sudo make install -j8
8.OpenCV系统环境配置:
-
运行
sudo vim /etc/ld.so.conf.d/opencv.conf
后, 在末尾添加 “/usr/local/lib” -
运行
sudo ldconfig
命令更新系统库缓存 -
运行
vim /etc/bash.bashrc
后,在文末添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
source /etc/bash.bashrc
8.jtop查看选项7,如下图所示
9.使用opencv_version
或pkg-config --modversion opencv4
查看OpenCV版本
编译新的cv_bridge
使用新的OpenCV以后,需要从github的vision_opencv仓库下载cv_bridge并且用新的openCV编译:
cd cv_bridge_dir
如果使用git下载,需要切换到相应的branch
mkdir build && cd build
cmake ..
sudo make install -j8
使用cv_bridge方法:在CMakeLists的find_package(cv_bridge)之前添加:
set(cv_bridge_DIR /usr/local/share/cv_bridge/cmake)
这会使得find_package语句使用安装在/usr/local路径下的cv_bridge