mac在vscode里配置opencv一直显示'opencv2/opencv.hpp' file not found

mac在vscode里配置opencv一直显示'opencv2/opencv.hpp' file not found
按照网上的教程用homebrew下载了opencv,但在vscode里使用opencv时一直报错,在c_cpp_c_cpp_propertiesc_cpp_properties.json的includepath添加了路径,在task.json也加了"pkg-config","--libs","--cflags","opencv4",不起作用

c_cpp_c_cpp_propertiesc_cpp_properties.json

{
    "configurations": [
        {
            "name": "Mac",
            "includePath": [
                "${workspaceFolder}/**",
                "/opt/homebrew/Cellar/opencv/4.7.0/lib/**",
                "/opt/homebrew/Cellar/opencv/4.7.0/include/opencv4/" 
            ],
            "defines": [],
            "macFrameworkPath": [
                "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks"
            ],
            "compilerPath": "/usr/bin/clang",
            "cStandard": "c17",
            "cppStandard": "c++17",
            "intelliSenseMode": "macos-clang-arm64"
        }
    ],
    "version": 4
}

task.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "g++ compile",
            "type": "shell",
            "command": "g++",
            "args": [
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}.out", 
                "`pkg-config",
                "--libs",
                "--cflags",
                "opencv4`",
                "-W",
                "-Wall",
                "-g",
                "-std=c++17",
            ],
            "group": "build",
            "presentation": {
                "echo": true,
                "reveal": "silent",
                "focus": false,
                "panel": "shared",
                "showReuseMessage": true,
                "clear": false
            },
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "problemMatcher": {
                "owner": "cpp",
                "fileLocation": "absolute",
                "pattern": {
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "message": 5
                }
            }
        },
        {
            "type": "cppbuild",
            "label": "C/C++: clang++ 生成活动文件",
            "command": "/usr/bin/clang++",
            "args": [
                "-fcolor-diagnostics",
                "-fansi-escape-codes",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        },
        {
            "type": "cppbuild",
            "label": "C/C++: clang build active file",
            "command": "/usr/bin/clang",
            "args": [
                "-fcolor-diagnostics",
                "-fansi-escape-codes",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "Task generated by Debugger."
        }
    ]
}

我下载的opencv的路径

img

报错含义:未找到opencv2/opencv.hpp文件
分析:很有可能是opencv2的路径错误
主要排查方向:
1.项目属性配置是否正确
2.系统的环境变量是否配置正确
3.头文件的路径修改

mac在 VSCode 中配置 opencv
跟着操作
https://www.cnblogs.com/banluxinshou/p/16834819.html

看起来已经正确地设置了包含路径,但是在 task.json 中的 "pkg-config" 参数似乎没有起作用。

注意pkg-config 应该是一个单独的参数,因此在 task.json 中应该写为 "pkg-config opencv4"。

可以试试手动运行 pkg-config opencv4 --libs --cflags 命令来确保它正常工作。这应该会打印出 opencv4 库的所有相关的编译和链接选项,例如 "-I/usr/local/include/opencv4" 和 "-L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui"。

如果这些选项不正确,可以手动将它们添加到 task.json 中的 "args" 参数中,例如 "-I/usr/local/include/opencv4" 和 "-L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui"。

如果仍然不行,可以试试在命令行中直接编译代码:

g++ my_code.cpp -o my_code.out -I/usr/local/include/opencv4 -L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui

如果这样能成功编译,那么可能是 vscode 的任务配置出了问题。可以试试清空 vscode 的缓存,然后重新打开 vscode 并再试试配置任务。
仅供参考,望采纳,谢谢。

VSCode 中配置 OpenCV 可能会出现 "opencv2/opencv.hpp file not found" 的错误。这通常是由于 OpenCV 库文件的路径没有正确设置导致的。要解决这个问题,需要在 VSCode 中设置 C++ 编译器的包含目录。

在 VSCode 的设置中,找到 "C/C++:Clang Command-Line Tools" 选项,并将 "Additional Include Directories" 设置为 OpenCV 库文件的路径。例如:

"C/C++: Clang Command-Line Tools": {
"Additional Include Directories": ["/usr/local/include/opencv4"]
}

然后保存设置,重新编译代码即可。如果你还是无法解决问题,建议检查 OpenCV 库文件是否已正确安装,并检查路径是否输入正确。

您好,根据您的配置文件,我看到您的 includePath 中加入了 opencv 库的路径,但是您的 task.json 中的编译命令中使用了 pkg-config 来获取库的路径和编译选项,这可能是导致出错的原因。pkg-config 可能无法正确识别 opencv4。

我建议您将 task.json 中的编译命令中的 "pkg-config", "--libs", "--cflags", "opencv4" 删除,并手动指定库路径和编译选项。例如:

    "command": "g++",
    "args": [
        "${file}",
        "-o",
        "${fileDirname}/${fileBasenameNoExtension}.out", 
        "-I/opt/homebrew/Cellar/opencv/4.7.0/include/opencv4",
        "-L/opt/homebrew/Cellar/opencv/4.7.0/lib",
        "-lopencv_core",
        "-lopencv_imgcodecs",
        "-lopencv_highgui",
        "-W",
        "-Wall",
        "-g",
        "-std=c++17",
    ],

另外,我建议您在编译命令中加入 -Wl,-rpath,/opt/homebrew/Cellar/opencv/4.7.0/lib,这会将编译的可执行文件与 opencv 库进行连接,使得在执行程序时能够找到库。

最后,如果上述修改后还是无法解决问题,您可以尝试检查是否有其他配置文件或脚本影响了编译器的行为。您也可以尝试在命令行中直接运行编译命令,以排除环境变量等问题。

应该是路径配置错误

在 macOS 上使用 VSCode 配置 OpenCV 可能会有一些麻烦。这是因为 OpenCV 的头文件和库文件可能不在系统默认的搜索路径中。

建议尝试以下步骤来解决问题:

  1. 确保 OpenCV 安装在了正确的位置,通常是 /usr/local/ 。如果没有安装或安装在了其他位置,请重新安装 OpenCV

  2. 在 tasks.json 中设置环境变量。在"args"中加入
    "-I/usr/local/Cellar/opencv/4.5.2/include/opencv4"
    "-I/usr/local/Cellar/opencv/4.5.2/include"
    "-L/usr/local/Cellar/opencv/4.5.2/lib"
    "-lopencv_highgui -lopencv_imgproc -lopencv_imgcodecs -lopencv_core"

  3. 编译器中配置opencv,在 c_cpp_properties.json 中配置
    "includePath": [
    "${workspaceFolder}/**",
    "/usr/local/Cellar/opencv/4.5.2/include/opencv4",
    "/usr/local/Cellar/opencv/4.5.2/include"
    ],
    "defines": [],
    "macFrameworkPath": [
    "/usr/local/Cellar/opencv/4.5.2/lib"
    ],

上面的路径是我的本地的路径,可能不同于你的路径,请根据你的实际安装路径来配置。

如果仍然出现问题,可以考虑阅读 OpenCV 的文档以获取更多信息,或者在社区问答网站上寻求帮助。

这个问题通常是由于OpenCV没有正确安装或者没有正确配置导致的。解决方法如下:

确保OpenCV已经安装并且在系统路径中。可以使用命令行输入'pkg-config --cflags --libs opencv'来测试是否已经安装。如果没有安装,可以使用'brew install opencv'命令安装。

在vscode中配置编译器的头文件路径。这一步的具体方法是,在vscode的'设置'(setting)中找到'编译器扩展设置'(C/C++ compiler extension settings),然后在'头文件路径'(includePath)中加入OpenCV的头文件路径。

在vscode的'环境变量'(environment variables)中配置OpenCV的库文件路径。这一步的具体方法是,在vscode的'设置'(setting)中找到'编译器扩展设置'(C/C++ compiler extension settings),然后在'环境变量'(environmentVariables)中加入'LD_LIBRARY_PATH',值为OpenCV的库文件路径。

如果还是无法解决问题,建议检查一下OpenCV的安装是否完整,或者可以尝试重新安装OpenCV。