【完美!!!ubuntu20.04 安装同时安装opencv3.4.1及opencv4.5切换使用】

概要

ubuntu20.04 安装同时安装opencv3.4.1及opencv4.5

       ————便于不同应用的程序对于opencv的调用

卸载已经安装的opencv版本

找寻之前安装的opebcv文件夹,通常来说,默认安装的opencv的.so和.h文件在/usr/local/lib 和/usr/local/include 文件中

1.找到opencv的安装文件:

   /home/l/opencv-4.5

2.进入该文件夹下的build文件夹中执行:

	sudo make uninstall

3.然后将build文件夹删除:

	cd ..
	sudo rm -r build

4.清理其他的相关项:

	sudo rm -r /usr/local/include/opencv4 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv4 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*

这里会报一些找不到文件路径的错误,没有关系,多执行几次,然后找到上面的指定文件看看有没有

安装opencv3.4

下载opencv3.4的文件: https://github.com/opencv/opencv/tree/3.4

或者

opencv版本在这[Releases · opencv/opencv · GitHub],contrib版本在这[GitHub - opencv/opencv_contrib at 3.4.3]

安装相关依赖

下载好对应的版本opencv,解压到当前目录: /home/l/opencv-3.4

  • 1.在该文件夹下打开终端:

      sudo apt-get update
      sudo apt-get upgrade
      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
    
  • 容易出现问题:
    注意:在这里很容易就出现某个依赖项安装有问题,比如依赖包libjasper-dev安安装就出现了问题

       (base) l@l:~/opencv-3.4$ sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
      正在读取软件包列表... 完成
      正在分析软件包的依赖关系树       
      正在读取状态信息... 完成       
      注意,选中 'python-dev-is-python2' 而非 'python-dev'
      E: 无法定位软件包 libjasper-dev
    
  • 解决方案:

      sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
      sudo apt update
      sudo apt install libjasper1 libjasper-dev
    

在重复1.中的代码

编译

make 安装

  • 2.在该文件夹下打开终端:

      mkdir build
      cd build/
      sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv-3.4  ..
    
  • 创建成功:

      省略 。。。。。
      --   Install to:                    /usr/local/opencv-3.4
      -- -----------------------------------------------------------------
      -- 
      -- Configuring done
      -- Generating done
      -- Build files have been written to: /home/l/opencv-3.4/build
    
  • 出现上面的结果,代表成功一小步;

      sudo make -j8
    
  • 编译成功:

      省略 。。。。。
      [ 99%] Building CXX object modules/videostab/CMakeFiles/opencv_test_videostab.dir/test/test_main.cpp.o
      [ 99%] Building CXX object modules/videostab/CMakeFiles/opencv_test_videostab.dir/test/test_motion_estimation.cpp.o
      Scanning dependencies of target opencv_python2
      [ 99%] Building CXX object modules/python2/CMakeFiles/opencv_python2.dir/__/src2/cv2.cpp.o
      [ 99%] Linking CXX executable ../../bin/opencv_test_videostab
      [ 99%] Built target opencv_test_videostab
      [ 99%] Building CXX object modules/stitching/CMakeFiles/opencv_perf_stitching.dir/perf/perf_stich.cpp.o
      [ 99%] Linking CXX executable ../../bin/opencv_perf_stitching
      [ 99%] Built target opencv_perf_stitching
      [ 99%] Linking CXX executable ../../bin/opencv_test_core
      [ 99%] Built target opencv_test_core
      [100%] Linking CXX shared module ../../lib/cv2.so
      [100%] Built target opencv_python2
    
  • 出现上面的结果,代表又成功一小步;

      	sudo make install
    
  • 安装成功:

      省略 。。。。。
      -- Installing: /usr/local/opencv-3.4/bin/opencv_interactive-calibration
      -- Set runtime path of "/usr/local/opencv-3.4/bin/opencv_interactive-calibration" to "/usr/local/opencv-3.4/lib"
      -- Installing: /usr/local/opencv-3.4/bin/opencv_version
      -- Set runtime path of "/usr/local/opencv-3.4/bin/opencv_version" to "/usr/local/opencv-3.4/lib"
    
  • 出现上面的结果,代表成功。

配置环境

用gedit打开/etc/ld.so.conf

  • 在文件中加上一行 /usr/loacal/opencv-3.4/lib

其中/usr/loacal/opencv-3.4/lib是opencv安装路径也就是makefile中指定的安装路径

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

输入

	/usr/loacal/opencv-3.4/lib

保存后终端输入

	sudo ldconfig

更新共享链接库
然后配置bash,修改bash.bashrc文件

	sudo gedit /etc/bash.bashrc

在文末加上

	PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv-3.4/lib/pkgconfig
	export PKG_CONFIG_PATH

保存后退出,终端输入以下命令使配置生效

	source /etc/bash.bashrc

更新一下

	sudo updatedb

可能出现的错误
在这里插入图片描述
解决办法:
终端输入

	sudo apt install mlocate

或者

	sudo apt install locate

然后再输入sudo updatedb就没问题了

查看一下opencv的版本信息

终端输入

	pkg-config --modversion opencv

在这里插入图片描述

安装opencv4.5

同上!!!!

下载opencv4.5的文件: https://github.com/opencv/opencv/tree/

或者

opencv版本在这[Releases · opencv/opencv · GitHub]

安装相关依赖

下载好对应的版本opencv,解压到当前目录: /home/l/opencv-4.5

  • 1.在该文件夹下打开终端:

      sudo apt-get update
      sudo apt-get upgrade
      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
    

编译

make 安装

  • 2.在该文件夹下打开终端:

      mkdir build
      cd build/
      sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv-4.5  ..
    
  • 创建成功:

      省略 。。。。。
      --   Install to:                    /usr/local/opencv-4.5
      -- -----------------------------------------------------------------
      -- 
      -- Configuring done
      -- Generating done
      -- Build files have been written to: /home/l/opencv-4.5/build
    
  • 出现上面的结果,代表成功一小步;

      sudo make -j8
    
  • 编译成功:

      省略 。。。。。
      [ 99%] Building CXX object modules/videostab/CMakeFiles/opencv_test_videostab.dir/test/test_main.cpp.o
      [ 99%] Building CXX object modules/videostab/CMakeFiles/opencv_test_videostab.dir/test/test_motion_estimation.cpp.o
      Scanning dependencies of target opencv_python2
      [ 99%] Building CXX object modules/python2/CMakeFiles/opencv_python2.dir/__/src2/cv2.cpp.o
      [ 99%] Linking CXX executable ../../bin/opencv_test_videostab
      [ 99%] Built target opencv_test_videostab
      [ 99%] Building CXX object modules/stitching/CMakeFiles/opencv_perf_stitching.dir/perf/perf_stich.cpp.o
      [ 99%] Linking CXX executable ../../bin/opencv_perf_stitching
      [ 99%] Built target opencv_perf_stitching
      [ 99%] Linking CXX executable ../../bin/opencv_test_core
      [ 99%] Built target opencv_test_core
      [100%] Linking CXX shared module ../../lib/cv2.so
      [100%] Built target opencv_python2
    
  • 出现上面的结果,代表又成功一小步;

      	sudo make install
    
  • 安装成功:

      省略 。。。。。
      -- Installing: /usr/local/opencv-4.5/bin/opencv_interactive-calibration
      -- Set runtime path of "/usr/local/opencv-4.5/bin/opencv_interactive-calibration" to "/usr/local/opencv-4.5/lib"
      -- Installing: /usr/local/opencv-4.5/bin/opencv_version
      -- Set runtime path of "/usr/local/opencv-4.5/bin/opencv_version" to "/usr/local/opencv-4.5/lib"
    
  • 出现上面的结果,代表成功。

配置环境

用gedit打开/etc/ld.so.conf

  • 在文件中加上一行 /usr/loacal/opencv-4.5/lib

其中/usr/loacal/opencv-4.5/lib是opencv安装路径也就是makefile中指定的安装路径

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

输入

	/usr/loacal/opencv-4.5/lib

保存后终端输入

	sudo ldconfig

更新共享链接库
然后配置bash,修改bash.bashrc文件

	sudo gedit /etc/bash.bashrc

在文末加上

	PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv-4.5/lib/pkgconfig
	export PKG_CONFIG_PATH

保存后退出,终端输入以下命令使配置生效

	source /etc/bash.bashrc

更新一下

	sudo updatedb

查看一下opencv的版本信息

终端输入

	pkg-config --modversion opencv

终端显示:

	4.5.0

但是出问题了!!!!

	Package opencv was not found in the pkg-config search path.
	Perhaps you should add the directory containing `opencv.pc'
	to the PKG_CONFIG_PATH environment variable
	No package 'opencv' found

1. 在/usr/local/opencv-4.5/lib/pkgconfig中没有opencv,pc 这个文件,也就是最后不会显示4.5.0的版本信息,为此我们需要进行一定的修改,使的我们可以随意使用这两个版本的opencv

那就是缺失了opencv.pc这个配置信息文件,故解决方法就是添加这个文件然后将其导入到环境变量中,具体操作如下:

首先我们需要创建一个文件夹:

	cd /usr/local/opencv-4.5/lib # 进入该目录下
 	sudo mkdir pkgconfig  # 创建文件夹
	cd pkgconfig  # 进入文件夹
	sudo touch opencv.pc  # 创建文件
	sudo chmod 777 opencv.pc  #  修改权限

打开opencv.pc 文件,里面复制粘贴以下内容:

	# Package Information for pkg-config
	prefix=/usr/local/opencv-4.5
	exec_prefix=${prefix}
	libdir=${exec_prefix}/lib
	includedir_old=${prefix}/include/opencv
	includedir_new=${prefix}/include

	Name: OpenCV
	Description: Open Source Computer Vision Library
	Version: 4.5.0
	Libs: -L${exec_prefix}/lib -lopencv_dnn -lopencv_highgui -lopencv_ml -lopencv_objdetect -lopencv_shape -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_videoio -lopencv_imgcodecs -lopencv_features2d -lopencv_video -lopencv_photo -lopencv_imgproc -lopencv_flann -lopencv_viz -lopencv_core
	Libs.private: -ldl -lm -lpthread -lrt
	Cflags: -I${includedir_old} -I${includedir_new}

保存退出

okok,此时,我们发现运行该命令可以输出版本信息:

终端输入

	pkg-config --modversion opencv

终端显示:

	4.5.0

但是,但是 并没有出现我们想要的可以随时更换使用opencv的目的

看接下来的关键操作:

在当前文件夹 /usr/local下打开终端

输入以下命令:

	sudo update-alternatives --install /usr/local/opencv opencv /usr/local/opencv-3.4/ 34
	sudo update-alternatives --install /usr/local/opencv opencv /usr/local/opencv-4.5/ 45 

此时,会出现这样的三个文件夹,但是通过命令,可以自由切换opencv的版本:

	sudo update-alternatives --config opencv

输出结果如下:

	(base) l@l:~/U20_3.0_lidarCameraCalibrate_online$ sudo update-alternatives --config opencv
	有 2 个候选项可用于替换 opencv (提供 /usr/local/opencv)。

	  选择       路径                  优先级  状态
	------------------------------------------------------------
	  0            /usr/local/opencv-4.5/   45        自动模式
	* 1            /usr/local/opencv-3.4/   34        手动模式
	  2            /usr/local/opencv-4.5/   45        手动模式

	要维持当前值[*]请按<回车键>,或者键入选择的编号:

接着,为保证可用性,我们还需要进行一下环境配置:

配置环境

用gedit打开/etc/ld.so.conf

  • 在文件中加上一行 /usr/loacal/lib,
  • 也即是 删除之前添加的两行内容,保证该文件中只有一行内容:

其中/usr/loacal/opencv/lib是opencv安装路径也就是makefile中指定的安装路径

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

输入

	/usr/loacal/opencv/lib

保存后终端输入

	sudo ldconfig

更新共享链接库

然后配置bash,修改bash.bashrc文件

	sudo gedit /etc/bash.bashrc

删除之前配置的4行内容:

	PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv-3.4/lib/pkgconfig
	export PKG_CONFIG_PATH
	PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv-4.5/lib/pkgconfig
	export PKG_CONFIG_PATH

在文末加上

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

保存后退出,终端输入以下命令使配置生效

	source /etc/bash.bashrc

更新一下

	sudo updatedb

然后在使用版本切换、查看命令:

终端输入

	pkg-config --modversion opencv

结果如下:

	l@l:~$ pkg-config --modversion opencv
	4.5.0
	l@l:~$ sudo update-alternatives --config opencv
	有 2 个候选项可用于替换 opencv (提供 /usr/local/opencv)。

	 选择       路径                  优先级  状态
	------------------------------------------------------------
	* 0            /usr/local/opencv-4.5/   45        自动模式
	  1            /usr/local/opencv-3.4/   34        手动模式
	  2            /usr/local/opencv-4.5/   45        手动模式

	要维持当前值[*]请按<回车键>,或者键入选择的编号:1
	update-alternatives: 使用 /usr/local/opencv-3.4/ 来在手动模式中提供 /usr/local/opencv (opencv)
	l@l:~$ pkg-config --modversion opencv
	3.4.20
	l@l:~$ sudo update-alternatives --config opencv
	有 2 个候选项可用于替换 opencv (提供 /usr/local/opencv)。

	  选择       路径                  优先级  状态
	------------------------------------------------------------
	  0            /usr/local/opencv-4.5/   45        自动模式
	* 1            /usr/local/opencv-3.4/   34        手动模式
	  2            /usr/local/opencv-4.5/   45        手动模式

	要维持当前值[*]请按<回车键>,或者键入选择的编号:0
	update-alternatives: 使用 /usr/local/opencv-4.5/ 来在自动模式中提供 /usr/local/opencv (opencv)
	s@s:~$ pkg-config --modversion opencv
	4.5.0

完美完成任务!!!!!!

  • 4
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值