M1芯片Mac+VSCode配置OpenCV报错:'opencv2/opencv.hpp'未找到
M1 Mac VSCode中OpenCV编译错误:'opencv2/opencv.hpp'文件未找到
在M1芯片的Mac上通过Homebrew安装OpenCV后,配置VSCode的c_cpp_properties.json和tasks.json后编译测试程序,出现以下错误:
fatal error: 'opencv2/opencv.hpp' file not found
代码中#include <opencv2/opencv.hpp>前有波浪线,虽IntelliSense能提供提示,但编译始终失败。
现有配置文件与测试代码
tasks.json
{ "version": "2.0.0", "tasks": [ { "type": "cppbuild", "label": "C/C++: g++ build active file", "command": "/usr/bin/g++", "args": [ "-fdiagnostics-color=always", "-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}", "-I", "/Users/user/Desktop/OpenCV/opencv/include/opencv2", "/usr/local/include/opencv4" ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": [ "$gcc" ], "group": "build", "detail": "compiler: /usr/bin/g++" } ] }
c_cpp_properties.json
{ "configurations": [ { "name": "Mac", "includePath": [ "${workspaceFolder}/**", "/Users/user/Desktop/OpenCV/opencv/include/opencv2", "/usr/local/include/opencv4" ], "defines": [], "macFrameworkPath": [ "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks" ], "compilerPath": "/usr/bin/clang", "cStandard": "c17", "cppStandard": "c++17", "intelliSenseMode": "macos-clang-arm64", "configurationProvider": "ms-vscode.cmake-tools" } ], "version": 4 }
测试代码
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; ///////////////// Images ////////////////////// int main() { string path = "/Users/brettmylek/Desktop/OpenCV/Img/TestImg.jpg"; Mat img = imread(path); imshow("Image", img); waitKey(0); return 0; }
解决步骤
1. 修正头文件路径(核心问题)
M1 Mac上Homebrew的默认安装路径是/opt/homebrew而非/usr/local,先确认OpenCV的实际安装路径:
执行命令:
brew --prefix opencv
输出类似/opt/homebrew/Cellar/opencv/4.x.x,头文件实际位于/opt/homebrew/include/opencv4(内部包含opencv2文件夹)。
修改两个配置文件的路径:
c_cpp_properties.json的includePath中,移除无效的本地路径,替换为/opt/homebrew/include/opencv4tasks.json的args中,每个-I必须紧跟一个路径(你的配置中/usr/local/include/opencv4前缺少-I),替换为"-I", "/opt/homebrew/include/opencv4"
2. 添加库链接参数
仅指定头文件不够,编译时需要链接OpenCV库。在tasks.json的args末尾添加:
"-L", "/opt/homebrew/lib", "-lopencv_core", "-lopencv_imgproc", "-lopencv_highgui", "-lopencv_imgcodecs"
-L指定库文件目录,-l后接需要的模块库(根据测试代码用到的功能添加)。
3. 适配M1架构的编译器(可选)
M1 Mac推荐用clang++替代g++,避免架构兼容问题,将tasks.json中的command改为/usr/bin/clang++。
修正后的配置示例
修正后的tasks.json
{ "version": "2.0.0", "tasks": [ { "type": "cppbuild", "label": "C/C++: clang++ build active file", "command": "/usr/bin/clang++", "args": [ "-fdiagnostics-color=always", "-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}", "-I", "/opt/homebrew/include/opencv4", "-L", "/opt/homebrew/lib", "-lopencv_core", "-lopencv_imgproc", "-lopencv_highgui", "-lopencv_imgcodecs" ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": [ "$gcc" ], "group": "build", "detail": "compiler: /usr/bin/clang++" } ] }
修正后的c_cpp_properties.json
{ "configurations": [ { "name": "Mac", "includePath": [ "${workspaceFolder}/**", "/opt/homebrew/include/opencv4" ], "defines": [], "macFrameworkPath": [ "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks" ], "compilerPath": "/usr/bin/clang++", "cStandard": "c17", "cppStandard": "c++17", "intelliSenseMode": "macos-clang-arm64", "configurationProvider": "ms-vscode.cmake-tools" } ], "version": 4 }
验证编译
保存配置后重新运行编译任务,生成可执行文件后运行,即可正常显示测试图片。
内容的提问来源于stack exchange,提问作者Mylek Dynamics
相关产品推荐
相关产品推荐

