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哈哈 ~

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

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

在使用VS Code时,如果遇到无法链接OpenCV头文件的问题,可以按照以下步骤解决: 1. 首先,确保你已经在程序中正确引用了OpenCV头文件,例如: ```cpp #include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/features2d/features2d.hpp> #include <opencv2/highgui/highgui.hpp> ``` 2. 如果仍然无法找到OpenCV头文件,可以使用命令行工具找到OpenCV头文件的位置。在终端中输入以下命令: ``` sudo find / -iname "*opencv*" ``` 这将在系统中搜索包含"opencv"的文件夹,并显示其路径。你可以根据显示的结果找到OpenCV头文件的位置。 3. 如果你没有安装OpenCV,可以从OpenCV官网(Home - OpenCV)下载编译好的OpenCV版本。根据你的操作系统和编译器选择合适的版本进行下载和安装。 4. 如果你使用的是MSVC编译器,注意不能使用g++调用编译好的OpenCV头文件。在使用CMake进行编译时,可以在CMake GUI中选择g++进行编译。然而,可能会遇到一些错误。你可以通过在百度上搜索解决方案来解决这些错误。 总结来说,如果在VS Code中无法找到OpenCV头文件,你可以通过检查引用的头文件是否正确、使用命令行工具找到头文件的位置、下载编译好的OpenCV版本或者在CMake GUI中选择合适的编译器来解决这个问题。希望这些方法能帮助到你。 #### 引用[.reference_title] - *1* *2* [解决opencv在vs code中头文件找不到的问题](https://blog.csdn.net/jianzhuozhu/article/details/109586234)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [vscode配置头文件——以Opencv和自己的头文件为例](https://blog.csdn.net/m0_58772523/article/details/123150162)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值