TX2环境搭建-opencv带opencv_contrib和cuda编译

一、安装准备

1、安装依赖

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

安装 python,可改命令后缀更改版本

sudo apt-get install python3.10

安装 numpy

pip install numpy

安装 tbb,jpeg,png,tiff

sudo apt-get install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev

依赖都安装一下,否则编译时会报错

2、下载源码

opencv源码下载
opencv_contrib下载
//链接待补充
我的版本是4.5.1

opencv-4.5.1.zip
opencv_contrib-4.5.1.zip
zhangcaijiang-opencv_3rdparty-contrib_xfeatures2d_boostdesc_20161012.zip
zhangcaijiang-opencv_3rdparty-contrib_xfeatures2d_vgg_20160317.zip

二、编译

1、解压文件

(1) 将所有文件放到同一目录下
在这里插入图片描述

(2) 依次解压

sudo unzip opencv-4.5.1.zip
sudo unzip opencv_contrib-4.5.1.zip
sudo unzip zhangcaijiang-opencv_3rdparty-contrib_xfeatures2d_boostdesc_20161012.zip
sudo unzip zhangcaijiang-opencv_3rdparty-contrib_xfeatures2d_vgg_20160317.zip

如图,后两个文件解压后会在同一个文件夹。
在这里插入图片描述
解压后的目录
在这里插入图片描述

(3) 文件替换和复制

将opencv_3rdparty的文件复制到xfeatures/src/

sudo cp opencv_3rdparty/* ../opencv/opencv_contrib-4.5.1/modules/xfeatures2d/src/

将opencv_contrib-4.5.1复制到opencv-4.5.1

sudo cp -r opencv_contrib-4.5.1 opencv-4.5.1

2、cmake 配置

(1)进入到 opencv-4.5.1 并创建build文件夹

cd opencv-4.5.1/
sudo mkdir build && cd build

(2)创建脚本文件,配置cmake选项
创建并打开文件

sudo gedit cmakeconfig.sh

脚本文件内容

sudo cmake -D CMAKE_BUILD_TYPE=RELEASE \
	-D CMAKE_INSTALL_PREFIX=/usr/local \
	-D INSTALL_PYTHON_EXAMPLES=ON \
	-D INSTALL_C_EXAMPLES=OFF \
    -D OPENCV_GENERATE_PKGCONFIG=ON \
	-D OPENCV_ENABLE_NONFREE=ON \
	-D WITH_CUDA=ON \
	-D WITH_CUDNN=ON \
	-D OPENCV_DNN_CUDA=ON \
	-D ENABLE_FAST_MATH=1 \
	-D CUDA_FAST_MATH=1 \
	-D CUDA_ARCH_BIN=6.2 \
	-D WITH_CUBLAS=1 \
	-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.5.1/modules \
	-D HAVE_opencv_python3=ON \
	-D PYTHON_EXECUTABLE=usr/bin/python3 \
	-D BUILD_EXAMPLES=OFF ..

注解:

  1. CMAKE_INSTALL_PREFIX 是opencv的安装地址 默认安装在 usr/local
  2. CMAKE_BUILD_TYPE 是opencv安装的版本,Release和Debug两种可选,默认安装Release
  3. OPENCV_ENABLE_NONFREE 是否使用部分被申请了专利的算方法 这里选True的话就可以使用了
  4. OPENCV_GENERATE_PKGCONFIG 强烈建议开启这个 设置为ON OPENCV_GENERATE_PKGCONFIG 因为opencv4默认不生成.pc文件,所以加上这句用于生成opencv4.pc文件,支持pkg-config功能。opencv4版本及以上 这里用ON。
  5. WITH_CUDA和WITH_CUDNN项指的是用CUDA和cuDNN。
  6. OPENCV_DNN_CUDA项表示我们要编译后的dnn模块支持CUDA。
  7. ENABLE_FAST_MATH, CUDA_FAST_MATH和WITH_CUBLAS项是为了优化运算而开启的。
  8. CUDA_ARCH_BIN项的GPU框架版本号很重要

TX2中CUDA_ARCH_BIN查询方法:见另一篇文章,tx2烧录和安装jetpack包 //待完善

给脚本文件添加权限

sudo chmod +x cmakeconfig.sh

运行脚本文件,进行cmake配置

./cmakeconfig.sh

3、编译和安装
编译和安装

sudo make -j8
sudo make install

编译后的opencv库安装在/ur/local目录下

三、环境配置

1、修改etc/bash.bashrc

sudo gedit /etc/bash.bashrc

文章末尾添加

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

2、修改动态库

sudo gedit /etc/ld.so.conf.d/opencv.conf

文章中添加

/usr/local/lib

更新

sudo ldconfig

四、测试

1、查看版本号和库

pkg-config --modversion opencv4
pkg-config --libs opencv4

2、测试
进入例程目录

 cd /home/nvidia/opencv/opencv-4.5.1/samples/cpp/example_cmake

配置和编译

sudo cmake .
sudo make

运行

 sudo ./opencv_example

当连接了摄像头时,能够运行成功。如果没有摄像头,可选择其他例程文件。

五、错误记录

1、CMake Error at modules/core/CMakeLists.txt:40(message):CUDA:OpenCV requires enabled ‘cudev’ module from ‘opencv_contrib’ repository:https://github.com/opencv/opencv_contrib
在这里插入图片描述
原因:缺少依赖文件
解决方法:安装依赖(即执行上文中“安装依赖”这一步)

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

sudo apt-get install python3.10
pip install numpy

sudo apt-get install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev

2、FATAL: In-source builds are not allowed. You should create separate directory for build files
在这里插入图片描述
原因:很多模块在编译源码时,需要在源码文件夹中新建build文件夹。
解决办法:执行下面命令

sudo rm CMakeCache.txt
sudo mkdir build && cd build
sudo cmake ..(或者执行上文中“cmake配置”这一步)
sudo make -j8

参考链接:解决报错FATAL: In-source builds are not allowed. You should create separate directory for build files.
3、opencv_contrib编译:fatal error: opencv2/xfeatures2d/cuda.hpp: No such file or directory
在这里插入图片描述
解决方法:在/home/nvidia/opencv/opencv-4.5.1/samples/CMakeLists.txt中加入:

INCLUDE_DIRECTORIES("/home/nvidia/opencv/opencv-4.5.1/opencv_contrib-4.5.1/modules/xfeatures2d/include")

参考链接:opencv_contrib编译:fatal error: opencv2/xfeatures2d/cuda.hpp: No such file or directory
4、Ubuntu18.04编译opencv3.4.10报错undefined reference to `cv::cuda::SURF_CUDA::SURF_CUDA()
在这里插入图片描述

参考链接:Ubuntu18.04编译opencv3.4.10报错undefined reference to `cv::cuda::SURF_CUDA::SURF_CUDA()及解决方案
以及
undefined reference to 'cv::cuda::SURF_CUDA::SURF_CUDA()解决方法
以上两种方法均未解决
考虑出错位置为example,故将其编译选项关闭,即修改cmake配置

-D BUILD_EXAMPLES=OFF

六、参考链接

Ubuntu安装Opencv、opencv_contrib、cuda(都是细节)

  • 22
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
TX2上安装OpenCV可以有两种方式。 第一种方式是使用cmake直接在TX2编译源码,具体步骤如下: 1. 下载OpenCV源码并解压。 2. 使用cmake配置编译选项,例如指定安装路径等。 3. 使用make命令编译源码。 4. 使用make install命令安装OpenCV。 第二种方式是使用已编译好的OpenCVTX2上进行配置,前提是你要确保编译的版本同样是在ARM平台上编译的。具体步骤如下: 1. 下载已编译好的OpenCV版本。 2. 解压下载的文件,并将其中的库文件和头文件拷贝到TX2上。 3. 配置环境变量,包括添加库文件和头文件的路径到LD_LIBRARY_PATH和C_INCLUDE_PATH中。 需要注意的是,TX2刷机时会安装最新版的OpenCV,但在安装ROS时会安装OpenCV的低版本。如果你需要安装3.2.0版本的OpenCV,可以通过上述方式进行安装和配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [TX2安装OpenCV3.2.0](https://blog.csdn.net/aisandra/article/details/115999534)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [TX2板子opencv安装](https://blog.csdn.net/u013230291/article/details/104327075)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值