Linux系统下VScode找不到opencv头文件,编译时出现警告的情况解决
·
一、我的环境
我是wsl2下的Ubuntu22.4,配置OpenCV4.8.0
二、出现问题
1.编译器(g++)找不到 OpenCV 的头文件
正在启动生成...
/usr/bin/g++ -std=c++17 -g
/home/hamburger/Energy_mechanism/test.cpp -o /home/hamburger/Energy_mechanism/test '`pkg-config --cflags --libs opencv4`' -Wall -Wextra /home/hamburger/Energy_mechanism/test.cpp:1:10: fatal error: opencv2/opencv.hpp: No such file or directory
1 | #include <opencv2/opencv.hpp>
| ^~~~~~~~~~~~~~~~~~~~
compilation terminated.解决办法一:
1、首先先验证OpenCV 安装正常
把下面复制到终端
pkg-config --cflags --libs opencv4如果出现类似 -I/usr/local/include/opencv4 -L/usr/local/lib -lopencv_core 。则说明安装正常
如果出现 Package opencv4 was not found in the pkg-config search path. → OpenCV 没装 / 没配置 pkg-config 路径。(在tasks.json中使用了pkg-config)。
下面是我头文件报错时用的tasks.json,谨慎参考
{
"tasks": [
{
"label": "C/C++: g++ build active file", // 保持和launch.json一致的名称
"type": "shell", // 关键:改成shell类型,支持执行pkg-config命令
"command": "/usr/bin/g++", // 编译器路径
"args": [
"-std=c++17",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}",
"`pkg-config --cflags --libs opencv4`", // pkg-config命令(shell类型支持)
"-Wall",
"-Wextra"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": ["$gcc"],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Build C++ file with OpenCV support (shell mode)"
}
],
"version": "2.0.0"
}也许你问豆包,豆包会说VS Code 还是把 pkg-config --cflags --libs opencv4 用单引号包起来了(终端进程那行显示 'pkg-config ...'),导致编译器依然没执行这个命令,只是把它当成了无效参数,基本是扯淡,重新执行还会报错。
2、检查头文件是否真的存在
ls /usr/local/include/opencv4/opencv2/opencv.hpp如果输出 /usr/local/include/opencv4/opencv2/opencv.hpp → 头文件存在;
如果输出 No such file or directory → OpenCV 安装路径不对
3、修正 c_cpp_properties.json
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/usr/include",
"/usr/include/opencv4", //根据你自身安装路径修改
"/usr/local/include/opencv4/**"
],
"compilerPath": "/usr/bin/g++",
"cStandard": "gnu11",
"cppStandard": "gnu++17",
"intelliSenseMode": "linux-gcc-x64",
"browse": {
"path": [
"${workspaceFolder}/**",
"/usr/include/**",
"/usr/local/include/**"
],
"limitSymbolsToIncludedHeaders": true
}
}
],
"version": 4
}
如果运行后还是标红,再往后看
解决方法二:
1、打开Ubuntu终端
# 用图形编辑器
gedit ~/.bashrc
# 如果 gedit 打不开(无图形化),用 vim 编辑
vim ~/.bashrc
2、在 ~/.bashrc 最后一行添加环境变量
export CPLUS_INCLUDE_PATH=/usr/include/opencv4:/usr/local/include/opencv4:$CPLUS_INCLUDE_PATH
保存退出后
验证是否成功
source ~/.bashrc
echo $CPLUS_INCLUDE_PATH
2、编译命令里的 -I 参数写法错了
这是我朋友遇到的问题:
* 正在执行任务: /usr/bin/g++ -std=c++17 -Wall -Wextra -g /home/hamburger/Energy_mechanism/*.cpp -o /home/hamburger/Energy_mechanism/main -I /home/hamburger/Energy_mechanism /usr/include/opencv4 -L /usr/lib/x86_64-linux-gnu -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_imgcodecs -lopencv_videoio
/home/hamburger/Energy_mechanism/test.cpp:1:10: fatal error: opencv2/opencv.hpp: No such file or directory
1 | #include <opencv2/opencv.hpp>
| ^~~~~~~~~~~~~~~~~~~~
compilation terminated.
* 终端进程“/bin/bash '-c', '/usr/bin/g++ -std=c++17 -Wall -Wextra -g /home/hamburger/Energy_mechanism/*.cpp -o /home/hamburger/Energy_mechanism/main -I /home/hamburger/Energy_mechanism /usr/include/opencv4 -L /usr/lib/x86_64-linux-gnu -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_imgcodecs -lopencv_videoio'”启动失败(退出代码: 1)。
* 终端将被任务重用,按任意键关闭。
说明tasks.json文件配置有问题
-I 是「指定头文件搜索路径」的参数,必须和路径紧挨着(无空格)
所以必须像这样:
"-I",
"${workspaceFolder}",
"-I",
"/usr/include/opencv4",
ok,至此应该可以解决头文件报错问题
更多推荐



所有评论(0)