Ubuntu Vscode Opencv头文件指定版本

7 篇文章 4 订阅
3 篇文章 0 订阅


前言

博主系统:ubuntu18.04
博主编程所用IDE: VSCode
情况介绍:博主电脑中有两个版本的opencv , 一个是安装ros的时候安装下来的opencv3 。 一个是自己编译安装的最新版opencv4 。


提示:以下是本篇文章正文内容,下面案例可供参考

一、vscode在环境中找头文件

一般来说,这两个版本的opencv都放在了系统环境变量中。

  1. 博主安装的opencv4 放在了 usr/local/include/opencv4
  2. ros安装的opencv3 放在了usr/include/opencv2

请添加图片描述
请添加图片描述
请添加图片描述

可以看到在vscode中如果你查看某个cv函数的定义, 会自动跳转到这个路径的usr/include/opencv2 opencv3 版本。
请添加图片描述

二、解决办法

方法一:详细写 include 头文件【不推荐】

请添加图片描述
这个时候查看cv函数的定义 ,他会跳转到opencv4 版本, 因为在系统中这样一个文件结构的头文件路径,是opencv4 独有的。

但是不推荐这样做,这样你在opencv4中编写的代码 ,那些用opencv3 的人就看不了了。 不利于移植。 而且写的冗长 。

那么怎么样才能让# include<opencv2/opencv.hpp>

这个头文件指向opencv4版本呢?看方法二

方法二:修改c_cpp_properties.json

在vscode中 ctrl+p 召唤命令行 , 输入C++ 会看到 一个配置c++选项。 选中即可
接着该文件夹下会创建c_cpp_properties.json文件。 修改内部配置
请添加图片描述
vscode检索头文件的时候 优先在

  1. 当前程序目录下找头文件 一般是include"func.hpp"
  2. 接着按照c_cpp_properties.json 中include的配置,在相应的目录下寻找
  3. 最后去系统的环境中寻找 如 usr/local/include usr/include 等等

这样设置以后 opencv2/opencv.hpp> 就指向了opencv4版本, vscode 会先到usr/local/include/opencv4 这个路径找,这样就先找到了opencv4
请添加图片描述

现在vscode 中cv的代码定义 头文件等等 就指向了对应的版本 。

如果你想头文件指向其他版本 就是异曲同工了 ,配置搜索路径的优先性 即可。

请添加图片描述
可见 此时编写的头文件 opencv2 有多个路径了。当然此时编写的opencv2/opencv.hpp
优先指向我们指定的路径的。

三、 问题出现的原因:博主的解释

为什么一开始: <opencv2/opencv.hpp> 没有指向opencv4所在的路径呢?

前文提到:

  1. 博主安装的opencv4 放在了 usr/local/include/opencv4
  2. ros安装的opencv3 放在了usr/include/opencv2

明显opencv4存放的路径在local/incldue

即使是在系统环境中 找头文件usr/local/incldue 也是优先于usr/incldue 检索的。

博主觉得问题在于:检索系统环境寻找头文件的时候 不会 递归检索

即:在 usr/local/incldue 这一个目录中检索 <opencv2/opencv.hpp> 明显是找不到的,因为usr/local/incldue 没有opencv2/ 这个文件夹 , 只有 opencv4 这个文件夹。显然系统并不会往下继续找一层。 不会找到 opencv4/opencv2/opencv.hpp

结果就是local/incldue下找不到 , 最后只能在 usr/include 找到了对应的文件。 所以vscode 的头文件就指向了 opencv3 那个版本了。

如果我对于这个问题的理解有差错 ,请一定帮忙指正。 博主只是提供一种理解的思路,并不保证正确。 【虽然我这种理解 能 解释蛮多问题的 O(∩_∩)O哈哈~ 】


总结

这是vscode 和linux 环境变量的相关知识 ,对于理解linux下C++的开发和编译也有帮助。

最后

彦祖,我看你就是一个学习的料 。内心向善的人才能学的好, 你若问我怎样再能内心向善呢?那当然是给的博主一个赞了(≧▽≦)/,O(∩_∩)O哈哈 ~

下次见!
请添加图片描述
看我干嘛, 快点赞!

如果有帮助到你的话,点个赞吧。遇到什么问题 留言即可。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值