opencv3和opencv4的版本切换

1.opencv/cv.h: 没有那个文件或目录

将opencv/cv.h:修改为

#include <opencv2/opencv.hpp>

2.‘CvMat’ has not been declared

添加头文件

#include <opencv2/core/types_c.h>

3.‘CV_REDUCE_SUM’ was not declared in this scope

添加头文件

#include<opencv2/core/core_c.h>

4.‘cvCreateMat’ was not declared in this scope;

等以下的报错
在这里插入图片描述
添加头文件

#include <opencv2/imgproc/types_c.h>

#include <opencv2/imgproc.hpp>

5. 编译DBoW2等出现"OpenCV > 2.4.3 not found."

make[2]: *** No rule to make target '../Thirdparty/DBoW2/lib/libDBoW2.so', needed by '../lib/libORB_SLAM2.so'

将CMakeLists.txt的opencv改称对应版本

6.‘CV_LOAD_IMAGE_UNCHANGED’ was not declared in this scope

修改为

cv::IMREAD_UNCHANGED
   CV_LOAD_IMAGE_UNCHANGED  = -1 ( = cv::IMREAD_UNCHANGED),
   CV_LOAD_IMAGE_GRAYSCALE 	= 0  ( = cv::IMREAD_GRAYSCALE),
   CV_LOAD_IMAGE_COLOR     	= 1  ( = cv::IMREAD_COLOR),
   CV_LOAD_IMAGE_ANYDEPTH   = 2  ( = cv::IMREAD_ANYDEPTH),
   CV_LOAD_IMAGE_ANYCOLOR   = 4

7. ‘CV_GRAY2BGR’ was not declared in this scope

修改方法为:将CV_GRAY2BGR改为cv::COLOR_GRAY2BGR
其余颜色变换也是将CV_改为cv::COLOR
或者加入头文件

#include <opencv2/imgproc/types_c.h>

8. error: ‘CV_CALIB_CB_ADAPTIVE_THRESH’ was not declared in this scope

#include <opencv2/calib3d/calib3d_c.h>

9.‘CV_AA’ was not declared in this scope

#include <opencv2/imgproc/imgproc_c.h>

10.‘CV_FONT_HERSHEY_SIMPLEX’ was not declared in this scope

修改方法:将CV_FONT_HERSHEY_SIMPLEX改为cv::FONT_HERSHEY_SIMPLEX

11. error: ‘CV_REDUCE_SUM’ was not declared in this scope

#include<opencv2/core/core_c.h>

12.error: static assertion failed: std::map must have the same value_type as its allocator

在loopClosing.h:50修改

typedef map<KeyFrame*,                  //键
                g2o::Sim3,                  //值
                std::less<KeyFrame*>,       //排序算法
                Eigen::aligned_allocator<std::pair<const KeyFrame*, g2o::Sim3> > // 指定分配器,和内存空间开辟有关. 为了能够使用Eigen库中的SSE和AVX指令集加速,需要将传统STL容器中的数据进行对齐处理
                > KeyFrameAndPose;

typedef map<KeyFrame*,                  //键
                g2o::Sim3,                  //值
                std::less<KeyFrame*>,       //排序算法
                Eigen::aligned_allocator<std::pair<KeyFrame* const , g2o::Sim3> > // 指定分配器,和内存空间开辟有关. 为了能够使用Eigen库中的SSE和AVX指令集加速,需要将传统STL容器中的数据进行对齐处理
                > KeyFrameAndPose;
### 如何在不同版本OpenCV之间进行切换 #### 跨平台概述 在多种操作系统环境下,切换不同版本OpenCV 可能涉及不同的方法技术细节。以下是针对 Ubuntu Windows 平台的具体解决方案。 --- #### 在 Ubuntu 上切换不同版本OpenCV 对于 Ubuntu 18.04 系统,可以按照以下方式实现多版本 OpenCV 的共存并完成版本间的切换: - **安装到独立路径** 将各个版本OpenCV 编译并安装至单独目录中,例如 `/usr/local/opencv3` `/usr/local/opencv4`[^1]。这样能够有效避免文件覆盖问题。 - **修改 CMakeLists 文件** 在项目开发过程中,通过调整 `CMakeLists.txt` 中指定的 OpenCV 版本路径来控制使用的具体版本。例如,在 CMake 配置阶段可以通过如下命令设置特定路径: ```cmake set(OpenCV_DIR /usr/local/opencv3/share/OpenCV) find_package(OpenCV REQUIRED) ``` - **环境变量动态加载** 如果希望临时更改运行时所依赖的 OpenCV 库,则可通过设置 LD_LIBRARY_PATH 来指向所需的共享库位置: ```bash export LD_LIBRARY_PATH=/usr/local/opencv3/lib:$LD_LIBRARY_PATH ``` 上述操作均需依据实际安装情况适配相应路径。 --- #### 在 Windows 上切换不同版本OpenCV Windows 用户通常借助 Visual Studio 进行开发工作,其配置过程相对直观但也同样重要: - **解压源码包** 根据官方指引从 Releases 页面获取所需版本压缩包后直接解压即可[^2]。注意保存好各版资源以免混淆丢失。 - **配置系统 PATH 或工程属性** 对于全局生效的情形可把对应 bin 子目录加入系统的 Path 列表;而对于单个项目而言则推荐仅改动该项目内的链接器输入项以及附加包含目录等内容。 另外值得注意的是当存在架构差异(如 X86 vs X64)时还需额外留意构建选项的选择以匹配目标机器类型[^4]。 --- #### Python 环境下的 OpenCV 版本管理 如果是在 Python 生态圈里头打算操控多样化的 opencv-python 扩展包形式的话,那么利用 pyenv 工具会是一个不错的选择方案之一: - 克隆仓库初始化本地副本之后便可以根据需求创建隔离虚拟空间进而分别安装定制化组合而成的新颖镜像实例[^5]: ```bash git clone https://github.com/pyenv/pyenv.git ~/.pyenv echo &#39;export PYENV_ROOT="$HOME/.pyenv"&#39; >> ~/.bashrc echo &#39;export PATH="$PYENV_ROOT/bin:$PATH"&#39; >> ~/.bashrc exec "$SHELL" pyenv install 3.x.y # 替代此处为期望的基础解释程序标签号 pyenv virtualenv 3.x.y my_cv_env source $(pyenv prefix)/versions/my_cv_env/bin/activate pip install opencv-contrib-python==version_number # 明确指明确切发行序列编号 deactivate # 结束当前交互式对话框前记得退出激活状态哦~ ``` 如此这般即完成了整个流程设定啦! ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值