多版本opencv共存 删除原系统opencv,安装opencv4.4.0 /3.4.10 / 2.4.13.5

本文用于记录opencv共存设置过程以及踩过的坑

环境:Ubuntu 20.04

按照csdn上其他博客说法,自带版本为opencv4,但之前因为不懂版本设置等原因,在需要更低版本时,没有将opencv3 以及2和4分开安装,按照网上的说法可能引起不必要的混乱,事实也确实如此。

一. 完全卸载opencv

sudo make uninstall
cd ..
sudo rm -r build
sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv 
 /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv 
 /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*

似乎没完全删除
使用find /usr iname opencv find /usr iname opencv4 find /usr iname opencv3.4 (之前安过3.4)find /usr iname opencv2 找到所有相关文件夹删除。

下面这条命令似乎可以把所有依赖都一起检测出来,并可以逐项悬着是否删除(由于对opencv依赖以及文件细节并不了解,没有尝试)

sudo find / -name "*opencv*" -exec rm -i {} \;

二.官网下载源码并编译

https://opencv.org/
我下载了opencv4.4.0 opencv3.4.10 opencv2.4.13.5

git clone https://github.com/opencv/opencv.git #opencv 4和3 版本在下面的图片中自己选一下
git clone https://github.com/opencv/opencv/archive/refs/tags/2.4.13.5.zip #opencv 2

在这里插入图片描述

常规编译如下
进入相应版本的opencv包中

mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv2.4.1 -D OPENCV_GENERATE_PKGCONFIG=ON -D WITH_CUDA=OFF ..
make -j4
sudo make install

注意不常规的地方cmake后面那一大堆,这个很重要

1

这条是不使用cuda编译,主要是因为我的显卡是3050ti似乎不被opencv2的cuda编译所支持,编译opencv3和4时没问题,可以不加

-D WITH_CUDA=OFF 

我是在没有加的情况下出现了这个编译错误

nvcc fatal : Unsupported gpu architecture 'compute_20'

2

这条是为了让pkg-config --modversion opencv命令可以搜索到opencv版本

-D OPENCV_GENERATE_PKGCONFIG=ON

但如果想搜索到还需要在~/.bashrc文件最后插入如下

gedit ~/bashrc
#Opencv 4.4.0
#export PKG_CONFIG_PATH=/usr/local/opencv4.4.0/lib/pkgconfig  
#export LD_LIBRARY_PATH=/usr/local/opencv4.4.0/lib  
#Opencv 3.4.10
#export PKG_CONFIG_PATH=/usr/local/opencv3.4.1/lib/pkgconfig  
#export LD_LIBRARY_PATH=/usr/local/opencv3.4.1/lib  
#Opencv 2.4.13.5
export PKG_CONFIG_PATH=/usr/local/opencv2.4.1/lib/pkgconfig  
export LD_LIBRARY_PATH=/usr/local/opencv2.4.1/lib

source一下以后就可以看到版本了(已经编译完以后的话)
s

3

该部分同样重要,将opencv不同版本安放在不同的文件夹中(编译3和4时把opencv2.4.1改成相应的版本名即可),目的是分开使用opencv各版本

-D CMAKE_INSTALL_PREFIX=/usr/local/opencv2.4.1

三.多版本切换

set(OpenCV_DIR /usr/local/opencv3.2.0/share/OpenCV)find_package( OpenCV 3.2 REQUIRED )替换原有的find_package(OpenCV REQUIRED)便可以实现切换

#find_package(OpenCV REQUIRED)      #使用opencv2

set(CMAKE_PREFIX_PATH /usr/local/opencv3.2.0/share/OpenCV)
# set (OpenCV_DIR "/home/xxx/opencv/opencv-4.2.0/build")
find_package( OpenCV 3.2 REQUIRED )    #使用opencv3.2

此处说明,find里只加opencv似乎时寻找系统安装的版本(似乎是这样,不太敢确定),我的电脑只家opencv会找到opencv4,情况是使用sudo apt-get install 安装了opencv,然后用源码安装的opencv3和2.

过程大概是这样,做记录用。也希望能对您有多帮助。

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值