Ubuntu下OpenCV2和OpenCV3共存的方法

本文介绍如何在系统中同时安装和使用OpenCV2和OpenCV3,解决因版本冲突导致的问题。通过分别编译安装两个版本,并设置CMakeList文件正确调用所需的OpenCV版本,实现版本间无缝切换。同时提供了解决动态链接库和头文件兼容性问题的方法。

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

  由于OpenCV3在OpenCV2的基础上改动比较大,且向下支持不够好,所以,很多老工程需要用OpenCV2,而新工程又仅支持OpenCV3。如果两者同时安装也不冲突,本质上也就是一些三方库,放在/usr/local/lib下面,但是如果使用FIND_PACKAGE(OpenCV REQUIRED)的时候,其本质是去/usr/local/share下面寻找cmake文件,而两个版本的cmake文件同名,所以必然是后安装的版本覆盖前安装版本的cmake文件,这样一来使用起来就不太方便了(需要修改成普通的添加三方库的方法来使用),下面分享一个小方法使得其可以更方便使用。

    默认大家已经有自己编译安装好的OpenCV(这里假设是OpenCV2)
    下载OpenCV3的源码 opencv3.2 我选择了最新的3.2版本,和3.1差别不大。
    使用cmake-gui将CMAKE_INSTALL_PREFIX修改成/usr/local/opencv3。
    之后generate,再make和sudo make install,在对应目录下就有OpenCV3的头文件和库文件了。

    到这里就将现版本的OpenCV和原有版本的OpenCV安装在不同的目录,相对应的cmake文件也被安装在不同目录。那么在CMakeList文件里面使用OpenCV3时,在FIND_PACKAGE(OpenCV REQUIRED)的前面,

set(OpenCV_DIR "usr/local/opencv3/share/OpenCV3"

这样系统就能够找到OpenCV3的头文件和库了,如果继续使用OpenCV2,不添加这句,系统会去默认目录/usr/local/share下面找OpenCV2即可。

Q1:如果出现libopencv_XXX.so.3.2: cannot open shared object file: No such file or directory,怎么办?
A1:

    进入目录:/etc/ld.so.conf.d、
    打开(创建)Opencv.conf
    添加 /usrlocal/opencv3/lib
    执行ldconfig即可。

Q2:如果头文件里面出现某个函数未声明的问题。

A1: 这是因为Opencv3不能很好的对Opencv2进行兼容,需要使用Opencv3的头文件,如果是使用Qt Creator,那就在pro文件内增加

INCLUDEPATH += /usr/local/opencv3/include/
 
---------------------  
作者:Zuo丶  
来源:CSDN  
原文:https://blog.csdn.net/u012423865/article/details/77185789  
版权声明:本文为博主原创文章,转载请附上博文链接!

### UbuntuOpenCV 的下载与安装 #### 使用预编译包安装 OpenCV 对于希望快速部署 OpenCV 应用程序的用户来说,可以采用预编译的方式进行安装。这种方式简单快捷,适合大多数应用场景。 通过官方仓库可以直接获取并安装最新稳定版: ```bash sudo apt update sudo apt install libopencv-dev python3-opencv ``` 此命令不仅会安装核心库 `libopencv-dev` 还包含了 Python 绑定支持[^1]。 #### 编译源码方式安装 OpenCV 如果需要特定配置或者最新的功能特性,则建议从源码构建 OpenCV。这虽然过程较为繁琐,但提供了更大的灵活性。 ##### 准备工作 首先确保系统已经安装了必要的开发工具链以及依赖项: ```bash sudo apt-get install cmake git pkg-config sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev \ libavformat-dev libswscale-dev libv4l-dev \ libjpeg-dev libpng-dev libtiff5-dev gfortran openexr \ libatlas-base-dev python3-dev python3-numpy libtbb2 libtbb-dev \ libdc1394-22-dev ``` 上述指令涵盖了 CMake 构建工具、图像处理所需的各类库以及其他辅助组件][^[^23]。 ##### 获取源代码 可以从 GitHub 上克隆 OpenCV 其额外模块(如需): ```bash git clone https://github.com/opencv/opencv.git cd opencv mkdir build && cd build ``` 接着按照个人需求调整 CMake 配置参数来定制化编译选项。 ##### 编译与安装 完成以上准备工作之后就可以开始正式编译了: ```bash cmake .. make -j$(nproc) sudo make install ``` 最后一步将会把编译好的文件复制到系统的标准位置以便全局访问[^2]。 #### 版本管理与共存策略 当存在多个不同版本的需求时,可以通过虚拟环境隔离各个项目的依赖关系;也可以利用 conda 或者 vcpkg 等第三方包管理系统实现更方便灵活的多版本管理切换操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值