【Opencv卸载与重装】NVIDIA Xavier NX下,卸载opencv3,重装opencv4

2023-05-16

文章目录

  • 前言
  • 一、OpenCV3.4完全卸载
  • 二、安装OpenCV(以4.4.0为例)
    • 1. 官网下载OpenCV对应版本的安装包
    • 2. 解压到opencv文件夹下,并新建build文件夹
    • 3. 安装依赖
    • 4. 进入build文件夹下,进行编译、安装(首次大概率会出问题)
    • 5. 环境配置
    • 6. 查看一下版本号
  • Reference


前言

因对OpenCV版本有所要求,所以需要将OpenCV3.4卸载,重新安装4.4.0版本。

注:ROS原本会有自带的OpenCV,记得不要把它删了,只删你自己另外加的库,不然后续运用ROS中的一些功能包的时候会因为找不到原来自带的Opencv而崩盘。

哦,好像NVIDIA Xavier NX也自带OpenCV4.5,嗯,我基本全删完了,已经找不到原来自带的版本了。

后续出现问题再解决吧,后续有问题最多也是更改版本重新编译和多OpenCV多版本共存的问题,小事情。本来科研路上的问题就是一个接着一个,然后又一个接着一个…

文章发布20天后我后悔了,真的就不小心系统原来的opencv删了,诶,准备刷机。

20211223:再提醒一次,linux系统是可以多版本OpenCV共存的,可以不用卸,每次编译的时候指定一下即可,OpenCV其实就只是个包,卸不卸本质影响只是空间而已;如果实在不想要这个版本再考虑卸。


一、OpenCV3.4完全卸载

  1. 进入原来编译opencv的build文件夹下
sudo make uninstall
  1. 返回上级
cd ..
  1. 删除build文件夹
sudo rm -r build
  1. 删除其他opencv相关文件
sudo rm -r /usr/local/include/opencv2 
sudo rm -r /usr/local/include/opencv 

sudo rm -r /usr/include/opencv
sudo rm -r /usr/include/opencv2 

sudo rm -r /usr/local/share/opencv 
sudo rm -r /usr/local/share/OpenCV 

sudo rm -r /usr/share/opencv 
sudo rm -r /usr/share/OpenCV 

sudo rm -r /usr/local/bin/opencv* 
sudo rm -r /usr/local/lib/libopencv*

sudo rm -r usr/bin/opencv* 
sudo rm -r /usr/lib/libopencv*

注:前四行命令中的opencv2,有些有可能自己命名了opencv4,在相关目录下删除掉跟opencv相关的文件夹就可以。

  1. 检查是否彻底删除
pkg-config opencv --libs
pkg-config opencv --modversion

出现No package ‘opencv’ found即可。

如果出现其他信息,则:

sudo apt-get autoremove opencv-doc opencv-data libopencv-dev libopencv2.4-java libopencv2.4-jni python-opencv libopencv-core2.4 libopencv-gpu2.4 libopencv-ts2.4 libopencv-photo2.4 libopencv-contrib2.4 libopencv-imgproc2.4 libopencv-superres2.4 libopencv-stitching2.4 libopencv-ocl2.4 libopencv-legacy2.4 libopencv-ml2.4 libopencv-video2.4 libopencv-videostab2.4 libopencv-objdetect2.4 libopencv-calib3d2.4
  1. 记得把原来的opencv文件夹删了。

Reference:CSDN@AI 菌


二、安装OpenCV(以4.4.0为例)

1. 官网下载OpenCV对应版本的安装包

opencv:https://opencv.org/releases/
opencv_contrib:https://github.com/opencv/opencv_contrib

2. 解压到opencv文件夹下,并新建build文件夹

mkdir build

3. 安装依赖

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 python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

出现问题:Unable to locate package libjasper-dev
解决方法:(主要就是arm架构下是ubuntu-ports,这一步会导致之前的源没了,记得先保存)

sudo add-apt-repository “deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe”
sudo apt update
sudo apt install libjasper1 libjasper-dev

Reference:CSDN@rrr2

4. 进入build文件夹下,进行编译、安装(首次大概率会出问题)

cd ~/opencv/build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib/modules/ ..

注:
① /usr/local 是指默认将要 install 的路径
② OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib/modules/ … 是指 opencv_contrib3.4.0 中 modules所在的路径,后面的两点不可省略

在cmake后应该会出现一些文件下载失败,这是因为墙和contrib的问题,这些文件不解决会导致后面makeinstall失败。

问题1:fatal error: boostdesc_bgm.i: No such file or directory

部分错误示例截图如下(系统只提示了一个,实际上第二张图这些都是缺失的):

在这里插入图片描述

在这里插入图片描述

解决方法:
step1:根据CmakeDownload.txt文件中的网址,自己“科学上网”或者从别人下载好的资源里修改名字,放进对应的文件夹里,具体可以参考我在Windows下安装OpenCV4的contrib的教程,这里就不赘述了。

在这里插入图片描述
我的缺失文件,带MD5值。

step2:再将没有MD5值的下列11个文件,直接把step1的文件去掉前缀即可,放入/home/opencv/opencv_contrib/modules/xfeatures2d/src路径下(根据自己contrib的路径做适当的更改,这是我的路径)。
无MD5值的文件名如下:

boostdesc_bgm.i
boostdesc_bgm_bi.i
boostdesc_bgm_hd.i
boostdesc_lbgm.i
boostdesc_binboost_064.i
boostdesc_binboost_128.i
boostdesc_binboost_256.i
vgg_generated_120.i
vgg_generated_64.i
vgg_generated_80.i
vgg_generated_48.i

step3:重新编译、安装(注:再cmake你就要再配置一次)。

make -j4			// 核数看自己平台决定
sudo make install

注:xdjm,看清楚再操作,那篇文章的评论区一堆没按步骤或者自己粗心没安装成功的。

问题2:fatal error: features2d/test/test_detectors_regression.impl.hpp: No such file or directory

在这里插入图片描述
解决方法:直接把opencv / modules / features2d复制,然后粘贴到build目录中来解决该问题。

最后再次编译:

make -j4			// 核数看自己平台决定
sudo make install

Reference:CSDN@HeyMountain、@g_grace1、@小小谢先生

5. 环境配置

step1:在ld.so.conf.d文件中加入位置

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

打开后可能是空文件,在文件内容最后添加:

     /usr/local/lib

step2:更新系统库

     sudo ldconfig

step3:配置系统.bashrc文件,在其中加入

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

step4:更新.bashrc文件

     source ~/.bashrc

6. 查看一下版本号

pkg-config opencv --modversion		# 4.0以下版本

opencv_version						# 4.0以上版本

注:
执行pkg-config --modversion opencv查看opencv版本的时候可能会出现问题,需要确保

1.第六步的时候设置了OPENCV_GENERATE_PKGCONFIG=ON

2.上面的PKG_CONFIG_PATH的变量的值 /usr/local/opencv4lib/pkgconfig的路径下有opencv.pc文件。若是opencv4.pc,则将该文件名修改为opencv.pc

执行命令

sudo cp  opencv4.pc opencv.pc

Reference

  1. https://blog.csdn.net/weixin_46135347/article/details/114190250
  2. https://blog.csdn.net/weixin_43436587/article/details/107622477
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Opencv卸载与重装】NVIDIA Xavier NX下,卸载opencv3,重装opencv4 的相关文章

  • 操作系统-三、操作系统结构(小林coding笔记)

    3 1Linux内核和Windows内核 Windows和Linux是常见的两款操作系统 xff0c 操作系统最核心的东西就是内核 内核 内核作为应用连接硬件设备的桥梁 内核的四个基本功能 xff1a 进程调度 内存管理 硬件通信 系统调用
  • 操作系统-四、内存管理(小林coding笔记)

    虚拟内存 防止内存运行多个程序时崩溃 把进程所使用的地址隔离开 xff0c 让操作系统为每个进程分配一套独立的虚拟地址 操作系统会提供一种机制 xff0c 将不同进程的虚拟地址和不同内存的物理地址映射起来 内存分段 程序时由若干逻辑分段组成
  • libcurl库

    目录 1 libcurl简介2 libcurl的使用3 libcurl的安装Libcurl库等第三方库的通用编译方法 3 调用libcurl访问百度主页4 libcurl 相关API解读1 curl global init 2 curl g
  • ERROR: cannot launch node of type: rplidar_ros

    1首先使用rospack find 命令查找该功能包 xff0c 如果输出功能包路径则该功能包存在 xff0c 如果提示没有则说明我们需要下载一个rplidar ros rospack find rplidar ros 2使用sudo ap
  • 【jetson nano】jetson nano环境配置+yolov5部署+tensorRT加速模型

    目录 jetson nano环境配置 43 yolov5部署 43 tensorRT加速模型致谢主机和jetson nano环境jetson系统开机烧录 系统设置 换源python环境配置conda环境yolov5环境matplotlib和
  • MDK仿真出现NOT IN SCOPE(不在范围内)

    这两天刚拿到一套GD32F1系列的开发板 xff0c 想着测试一下 xff0c 看和STM32的有啥不同 xff0c 自己仿真时候 xff0c 想要在窗口观察一下数值 xff0c 结果总是提示NOT IN SCOPE没办法 xff0c 就查
  • Keil调试局部变量显示“not in scope“的问题解决

    Keil调试局部变量显示 34 not in scope 34 的问题解决 参考文章 xff1a xff08 1 xff09 Keil调试局部变量显示 34 not in scope 34 的问题解决 xff08 2 xff09 https
  • MPU6050可以读取ID值,温度值和原始数据值为零问题解决

    MPU6050可以读取ID值 xff0c 温度值和原始数据值为零问题解决 参考文章 xff1a xff08 1 xff09 MPU6050可以读取ID值 xff0c 温度值和原始数据值为零问题解决 xff08 2 xff09 https w
  • 英伟达Jetson Xavier NX部署YOLO5

    1 查看JetPack版本 新到手的NX首先需要确定一下JetPack的版本 xff1a sudo apt span class token operator span cache show nvidia span class token
  • 史上最全 | BEV感知算法综述(基于图像/Lidar/多模态数据的3D检测与分割任务)...

    点击下方卡片 xff0c 关注 自动驾驶之心 公众号 ADAS巨卷干货 xff0c 即可获取 点击进入 自动驾驶之心技术交流群 后台回复 BEV综述 获取论文 xff01 后台回复 ECCV2022 获取ECCV2022所有自动驾驶方向论文
  • matlab-字符串的处理操作

    建立一个字符串向量 xff0c 然后对该向量做如下处理 xff1a 取第1 5个字符组成的子字符串 将字符串倒过来重新排列 将字符串中的小写字母变成相应的大写字母 xff0c 其余字符不变 统计字符串中小写字母的个数 代码 ch 61 39
  • curl发送带有Authorization的POST请求

    一 参数说明 格式 xff1a curl H 请求头 d 请求体 X POST 接口地址 参数内容格式 H header 请求头 Content Type application json d请求内容 remote host 10 163
  • AStar寻路算法 (C#)

    一 介绍 A星算法其实并不是最短路径算法 xff0c 它找到的路径并不是最短的 xff0c 它的目标首先是能以最快的速度找到通往目的地的路 B星实际上是A星的优化 但是B星的缺点是不能向后查找 所以会有问题 还有一种D星的可以用来找最短路径
  • 深度相机介绍(TOF、RGB双目、结构光参数对比)

    一 深度相机的介绍 随着计算机视觉与人工智能技术的飞速发展 xff0c 采用深度相机进行场景三维重建 目标检测 环境感知等应用越来越广泛 xff0c 与传统的2D相机不同 xff0c 深度相机可以通过拍摄空间来获得景深信息 xff0c 从而
  • 网络编程——UDP

    目录 UDP的服务器端 UDP的echo客户端代码 UDP的echo服务器端代码 UDP的服务器端 先运行服务器端 xff0c 再运行客户端 服务端 xff1a 开发者 xff1a Virtuous 开发版本 xff1a 1 0 开发时间
  • HTTP 完全解析

    Http 详解 HTTP 的定义 HTTP即是 xff1a Hypertext Transfer Protocol xff0c 超文本传输协议 xff0c 种 络传输协议 xff0c 位于 TCP IP 协议族的最顶层 应 层 URL 说到
  • STM32 自定义串口协议

    STM32 自定义串口协议 1 串行通信1 1 原理与优缺点1 2 分类1 2 1 按通信方向1 2 2 按通信方式 1 3 异步串行引脚连接1 3 1 串口外设之间1 3 2 ARM与PC之间 1 4 字符帧格式1 5 串口通信过程1 6
  • 无人机——电机篇(一)

    文章目录 1 电机的定义 2 电机的分类 3 电机的参数 4 电机效率 5 电机的选择 1 电机的定义 电机俗称 马达 是无人机的动力来源 无人机通过改变电机的转速来改变无人机的飞行状态 即改变每个电机的速度 使得无人机能够盘旋空中 上升或
  • HTTP请求/响应报文结构

    HTTP请求报文 一个HTTP请求报文由四个部分组成 xff1a 请求行 请求头部 空行 请求数据 1 请求行 请求行由 请求方法字段 URL字段 和 HTTP协议版本字段 3个字段组成 xff0c 它们用空格分隔 比如 GET data
  • AStar寻路算法

    概述 AStar算法是一种图形搜索算法 xff0c 常用于寻路 他是以广度优先搜索为基础 xff0c 集Dijkstra算法和最佳优先 best fit 于一身的一种算法 示例1 4向 示例2 8向 思路 递归的通过估值函数找到最佳路径 x

随机推荐