linux jetson 升级opencv 4.5.3并卸载旧版 contrib

卸载旧版opencv

sudo apt-get purge libopencv*
sudo apt autoremove
sudo apt-get update

安装opencv4.5.3

[compiler] sudo apt-get install build-essential
[required] sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
[optional] sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

如果遇到libjasper无法安装的话
在 /etc/apt/sources.list的末尾加上

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe

保存后在终端执行以下命令即可

sudo apt update
sudo apt install libjasper1 libjasper-dev

另外我们将采用cmake图形化界面进行安装
在终端操作

sudo apt install cmake-qt-gui

然后在opencv官网下载4.5.3版本的opencv
点击【sources】即开始下载 下载后解压
请添加图片描述
opencv的github上下载contrib模块 解压即可

在解压后的opencv文件夹内打开终端 输入命令打开cmake图形化界面

cmake-gui

按照下图所示填写最上方的信息
请添加图片描述

勾选OPENCV_GENERRATE_PKGCONFIG
CMAKE_BUILD_TYPE设置为release
取消勾选WITH_WEBP

OPENCV_EXTRA_MODULES_PATH设置为contrib文件夹下的modules文件夹

有cuda需求的话勾选OPENCV_DNN_CUDA WITH_CUDA
WITH_TBB

有qt下需求的勾选WITH_QT

其他我本人需要 读者可自行选择的选项
WITH_OPENGL(需要同时勾选WITH_GTK WITH_GTK_2_X) OPENCV_ENABLE_NONFREE WITH_OPENNI2
WITH_FAST_MATH

此时直接编译的话会因为连接不到海外服务器而无法编译contrib
需要编辑/etc/hosts
在最末尾添加

199.232.68.133 raw.githubusercontent.com
185.199.108.133 raw.githubusercontent.com
185.199.109.133 raw.githubusercontent.com
185.199.110.133 raw.githubusercontent.com
185.199.111.133 raw.githubusercontent.com

然后点击configure按钮 选择Unix Makefiles --> Use default native compilers

请添加图片描述

耐心等待 还报错就多configure几次
如果还是连不上海外服务器的话 可以自行下载 具体步骤:
在报错内容文件~opencv-4.5.3/build/CMakeDownloadLog.txt内查看文件来源
比如我的报错信息是

#do_copy "boostdesc_binboost_064.i" "202e1b3e9fec871b04da31f7f016679f" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_064.i" "/home/bear/Soft/opencv-4.5.3/build/downloads/xfeatures2d"

意思就是要在https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26这个网站下载boostdesc_binboost_064.i这个文件 然后放到/home/bear/Soft/opencv-4.5.3/build/downloads/xfeatures2d这个路径里

而一般cmake下载不了的话在网页也是登不上这个网站的
要在github_opencv_3rdparty上下载
进入网页后点击第三行的[master]后在弹出的搜索栏内输入所需文件的文件名 选择后缀带有年月日期的选项后进入下载即可

直到configure done 也没有红字报错的时候 再点击[generrate]
最后是编译并安装

make -j8
sudo make install
## 配置PKG-CONFIG
```bash
sudo vim /etc/ld.so.conf.d/opencv.conf

按i即可以开始编辑文本 在文件末尾添加:/usr/local/lib

如果这是我们第一次安装opencv,这个文件可能是个空文件,这里的/usr/local/lib就是我们安装opencv时安装的那些库的目录

然后保存编辑并退出回终端 方法为输入冒号:,再输入wq

退回终端后 输入

sudo ldconfig
sudo vim /etc/bash.bashrc

然后在文本末尾处添加:

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

然后同样:wq,再在终端输入以下命令以更新系统的环境变量

source /etc/bash.bashrc

至此pkg-config配置完成

## WITH_OPENGL的小问题
cmake版本大于v3.10的话会要求修改cmakelists.txt
增加如下内容

```bash
if (POLICY CMP0072)
  set(OpenGL_GL_PREFERENCE LEGACY)
endif()

注意:如果不把 GLVND改为LEGACY的话 会出现如下报错

1>dynafu.obj : error LNK2019: unresolved external symbol glBindRenderbufferEXT referenced in function "public: __cdecl cv::dynafu::DynaFuImpl::DynaFuImpl(struct cv::dynafu::Params const &)" (??0?$DynaFuImpl@VMat@cv@@@dynafu@cv@@QEAA@AEBUParams@12@@z)
1>dynafu.obj : error LNK2019: unresolved external symbol glGenRenderbuffersEXT referenced in function "public: __cdecl cv::dynafu::DynaFuImpl::DynaFuImpl(struct cv::dynafu::Params const &)" (??0?$DynaFuImpl@VMat@cv@@@dynafu@cv@@QEAA@AEBUParams@12@@z)
1>dynafu.obj : error LNK2019: unresolved external symbol glRenderbufferStorageEXT referenced in function "public: __cdecl cv::dynafu::DynaFuImpl::DynaFuImpl(struct cv::dynafu::Params const &)" (??0?$DynaFuImpl@VMat@cv@@@dynafu@cv@@QEAA@AEBUParams@12@@z)
1>dynafu.obj : error LNK2019: unresolved external symbol glBindFramebufferEXT referenced in function "public: __cdecl cv::dynafu::DynaFuImpl::DynaFuImpl(struct cv::dynafu::Params const &)" (??0?$DynaFuImpl@VMat@cv@@@dynafu@cv@@QEAA@AEBUParams@12@@z)
1>dynafu.obj : error LNK2019: unresolved external symbol glGenFramebuffersEXT referenced in function "public: __cdecl cv::dynafu::DynaFuImpl::DynaFuImpl(struct cv::dynafu::Params const &)" (??0?$DynaFuImpl@VMat@cv@@@dynafu@cv@@QEAA@AEBUParams@12@@z)
1>dynafu.obj : error LNK2019: unresolved external symbol glFramebufferRenderbufferEXT referenced in function "public: __cdecl cv::dynafu::DynaFuImpl::DynaFuImpl(struct cv::dynafu::Params const &)" (??0?

另外 有可能会出现如下报错

/home/bear/Soft/opencv-4.5.3/modules/ts/include/opencv2/ts.hpp:816:1: fatal error: opening dependency file CMakeFiles/opencv_test_barcode.dir/test/test_main.cpp.o.d: Permission denied

如报错所示 Permission denied意思是文件因权限不足而被拒绝访问 解决方法是在opencv文件夹下打开终端 输入

sudo chmod -R 777 *

将文件夹下所有文件的权限都设置为可访问 即可

cmake版本小问题

CMake Deprecation Warning at 3rdparty/carotene/CMakeLists.txt:1 (cmake_minimum_required):
Compatibility with CMake < 2.8.12 will be removed from a future version of
CMake.
Update the VERSION argument value or use a … suffix to tell
CMake that the project does not need compatibility with older versions.

出现了这个问题的话就修改3rdparty/carotene/CMakeLists.txt把第一行的版本要求前面加上#注释掉即可
如果是别的cmakelists出现报错也按这种思路解决

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值