linux下多版本opencv共存问题

本文介绍了一种在Linux环境下简单地切换不同版本OpenCV的方法。通过调整安装顺序及在CMakeLists.txt中指定OpenCV路径,可以在Python和CMake项目中灵活选择所需的OpenCV版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在linux下编译工程是一件很头疼的事情,有时候一个工程需要用到opencv2.X版本,有时候需要用到3.X版本,有时候便捷的办法也只是分别在opencv2.X文件夹重新编译,覆盖之前的版本。下面说一种比较简单的方法。
首先确保电脑李有下载好的两个opencv文件夹。比如博主是这样的,放在主文件夹下:
这里写图片描述
都进行过安装,也就是都在各自build文件执行过

cmake ..
make 
sudo make install

那么,如果你经常使用Python,想要调用opencv2.X版本,那就先执行opencv3.X版本的安装,后执行opencv2.X的安装,这样,opencv2.X就把3.X覆盖。Python中的opencv版本就会如下所示
这里写图片描述

但是你的Cmake工程,经常会调用opencv3.X版本,但是难道又执行一遍上述命令吗?这是一件很耗费时间的事情,当然,有更加方便的问题让各位方便调用opencv,只要执行过一次的opencv3.X版本的编译安装,哪怕它已经被opencv2.X版本覆盖,这都没有关系。
找到你的CmakeLists.txt 打开之后,设置opencv的路径,添加类似如下一行,(找到你需要设置的opencv版本的build文件夹,不能完全复制,因为这是博主自己的文件夹)。

set( OpenCV_DIR "/home/andy/opencv-3.1.0/build")

这样就指定了你的opencv的版本,编译的时候也不会报错。博主添加的位置大致如下:
这里写图片描述
这样编译就不会出错了。
反过来也是一样,欢迎指正交流。

### 多版本 OpenCV 安装与管理 为了在 Ubuntu 20.04 上实现多个版本的 OpenCV 的安装和管理,可以采用以下方法: #### 方法概述 通过源码分别编译不同版本的 OpenCV 并将其安装到不同的目录下。之后利用 `update-alternatives` 工具来管理和切换这些版本。 --- #### 步骤说明 1. **安装必要的依赖项** 需要先安装一些基础工具和库文件以便支持 OpenCV 编译过程。 ```bash sudo apt update && sudo apt upgrade -y sudo apt install build-essential cmake git pkg-config libgtk-3-dev \ libavcodec-dev libavformat-dev libswscale-dev libv4l-dev \ libjpeg-dev libpng-dev libtiff-dev gfortran openexr libatlas-base-dev \ python3-dev python3-numpy libtbb2 libtbb-dev libdc1394-22-dev ``` 这些依赖项涵盖了图像处理、视频编码解码以及 Python 支持等功能[^1]。 2. **下载并编译各个版本的 OpenCV** 对于每一个想要安装的 OpenCV 版本,重复如下操作: - 创建工作目录用于存放该特定版本的相关文件。 ```bash mkdir ~/opencv_build_3.4 && cd ~/opencv_build_3.4 ``` - 下载对应版本的源代码。 ```bash wget https://github.com/opencv/opencv/archive/refs/tags/3.4.zip unzip 3.4.zip mv opencv-3.4 . rm 3.4.zip ``` - 准备构建环境。 ```bash mkdir build && cd build cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local/opencv-3.4 .. make -j$(nproc) sudo make install ``` 将上述流程应用于其他所需版本(如 4.x),只需调整目标路径 `/usr/local/opencv-X.Y` 和对应的标签地址即可[^2]。 3. **配置多版本共存机制** 使用 Linux 提供的 `update-alternatives` 命令设置默认使用的 OpenCV 版本。 ```bash sudo update-alternatives --install /usr/local/opencv opencv /usr/local/opencv-3.4/bin/opencv_version 34 sudo update-alternatives --install /usr/local/opencv opencv /usr/local/opencv-4.5/bin/opencv_version 45 ``` 当需要更改当前活动版本时运行下面这条指令选择合适的选项号完成切换。 ```bash sudo update-alternatives --config opencv ``` 如果某些程序明确指定了某个具体位置下的动态链接库,则无需额外修改全局变量;否则可能还需要更新 LD_LIBRARY_PATH 或者创建软连接指向正确的 so 文件夹[^3]。 --- #### 注意事项 确保每次重新启动终端或者服务器之前都已正确设置了 PATH 及 LIBRARY 路径以反映最新的变更情况。此外,在开发过程中如果遇到冲突问题可以通过虚拟环境隔离各项目间的差异影响范围最小化风险。 ```python import cv2 as cv print(cv.__version__) ``` 此段脚本可用于验证当前加载的是哪个版本的 OpenCV 库。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值