OpenCV4.7+Contrib+VSCode编译安装
下载OpenCV和Contrib#
https://www.raoyunsoft.com/opencv/opencv_contrib/
编译#
-
打开Cmake GUI
-
点击
configure
,选择Specify native compilers
-
点击
finish
,开始configure -
勾选需要的再次
configure
,最后generate
-
进入生成的mingw文件夹,make
mingw32-make -j 4
mingw32-make install
编译就完成了
Contrib安装#
-
在cmake的时候勾选
OPENCV_ENABLE_NONFREE
并填写OPENCV_EXTRA_MODULES_PATH
,建议使用图中的三个点选择位置,否则可能会报空格错误。 -
和之前一样进行configure和generate,最后编译。注意可能会因为网络问题无法下载一些包,需要自己下载。(见问题1)
配置VSCode#
.vscode中增加三个文件:
c_cpp_properties.json
{
"configurations": [
{
"name": "win32",
"includePath": ["${workspaceFolder}/**",
"D:/Programs/OpenCV/opencv/build/x64/mingw/install/include",
"D:/Programs/OpenCV/opencv/build/x64/mingw/install/include/opencv2",
"D:/Programs/OpenCV/opencv/build/x64/mingw/install/x64/mingw/lib"],
"defines": ["_DEBUG", "UNICODE", "_UNICODE"],
"compilerPath": "D:\\Programs\\mingw64\\bin\\g++.exe",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x64"
}
],
"version": 4
}
launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "g++.exe build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\Debugger\\${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "D:\\Programs\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": false
}
],
"preLaunchTask": "g++.exe build active file"
}
]
}
tasks.json
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "g++.exe build active file",
"command": "D:/Programs/mingw64/bin/g++.exe",
"args": [
"-g",
"${file}",
"-o", "${workspaceFolder}\\Debugger\\${fileBasenameNoExtension}.exe",
"-I", "D:/Programs/OpenCV/opencv/build/x64/mingw/install/include",
"-I", "D:/Programs/OpenCV/opencv/build/x64/mingw/install/include/opencv2",
"-L", "D:/Programs/OpenCV/opencv/build/x64/mingw/install/x64/mingw/lib",
"-lopencv_core470",
"-lopencv_imgproc470",
"-lopencv_imgcodecs470",
"-lopencv_video470",
"-lopencv_ml470",
"-lopencv_highgui470",
"-lopencv_objdetect470",
"-lopencv_flann470",
"-lopencv_imgcodecs470",
"-lopencv_photo470",
"-lopencv_videoio470"
],
"options": {
"cwd": "D:/Programs/mingw64/bin"
},
"problemMatcher": ["$gcc"],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
VSCode中运行时使用F5
进行调试,实际运行时发现仍需要把.dll文件放入/Debugger文件夹中。
问题#
-
cmake由于网络问题缺包,会影响后续编译
解决方法:在
CMakeDownloadLog.txt
中查看下载地址和文件地址,手动下载放到文件夹里。
-
make报错
error: 'once_flag' in namespace 'std' does not name a type static std::once_flag once_flag; ^
解决方法:重新安装mingw为posix版本。
-
加入contrib模块后,make过程中报的与Anaconda hdf5相关错误
stackoverflow也有相同的问题,未解决:
解决方法:换了一个不含Anaconda和Python的电脑,可以正常编译。
参考资料#
VScode搭建Opencv(C++开发环境)_vscode opencv_河旬的博客-CSDN博客
OpenCV3中nonfree不存在以及contrib模块的添加的问题及解决办法_Owen_Suen的博客-CSDN博客
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?