近来由于工作需要,需要学习OpenCV,OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。OpenCV出来的时间也很久了,但是相关可以作为学生在线学习的视频比较少,多是利用VS平台使用C++语言的,VS平台安装体积大,不是很方便,于是尝试利用vscode这个软件,从刚接触到熟练安装也花费了不少时间,如果不总结一下,感觉很快就要忘了,于是就有了本人这第一篇博文。
VScode作为一款代码编辑器,想要运行C++代码,一般均需要在扩展商店里安装排在第一位的C++插件,另外Visual Studio平台软件之所以大,是因为包含了有编译器,Vscode要想运行opencv代码也需要编译器,一般来说这样是要用到MinGW-w64这款编译器。网络上有评价说MinGW-w64 适合初学使用,VS等适合工作生产使用,作为非计算机专业人士,具体内涵我也是不太清楚,但结合着VScode确实也挺方便,文件体积很小。下面就开始安装过程。
首先列举一下需要的软件: VScode、mingw64、cmake、opencv-3.4.2-vc14_vc15.exe、opencv_contrib-3.4.2.zip VScode、cmake软件版本号保持最新就行,mingw64需要下载 -posix-seh-这个版本,
最后两个文件是从github上下载的release包,opencv与contrib扩展包的版本号一致即可,上至4.5.5版本安装过程也基本相似。下面的安装过程结合了网络上很多安装经验总结而成,相信能解决很多人的问题。
这里主要涉及两个目录的选择,第一行填opencv解压后的sources文件夹,第二行为编译后保存的文件夹,选择后直接点一下左下角的Configure, 弹出框里需要如下设置,选择mingw
在弹出的编译器选择界面里,需要依次填写mingw文件夹中的编译器,分别是
C 对应 /mingw64/bin/x86_64-w64-mingw32-gcc.exe
C++ 对应 /mingw64/bin/x86_64-w64-mingw32-g++.exe
填完后点击finish,等待即可,这期间需要下载很多必要github上的文件,如果网络不通,就会红字显示错误,如有这样情况,可以到刚才自己设置的保存编译的文件夹中查看CMakeDownloadLog.txt文件,里面会有很多github链接,
可以将其中missing的链接复制出来到一个txt中,在原链接前加入GitHub Proxy 代理加速 超链接网址,效果如图,然后再用下载工具批量下载,放入相应文件夹内
再点击Configure按钮,直到没有红色报错
这里需要设置的很多, 有些需要打勾,有些需要取消打勾,这里的选择决定着你随后编译命令的顺利执行,当然这里的设置我结合了许多的经验,让我从341一直顺利编译到455没有错误,但是也不保证在你的电脑上同样不出错。以下有的设置是为了编译后的简单配置,有的是套用经验,可能有些设置不是必须,取舍看自己。下面是具体的设置。
在上方红色菜单下,以下条目需要勾选
BUILD_EXAMPLES,
BUILD_opencv_world,
ENABLE_CXX11,
WITH_OPENGL
其中若有些条目没有,需要新建一个然后勾,有些本身就勾着,那也就不用管了
以下条目需要取消勾选
CPU_DISPATCH,
ENABLE_PRECOMPILED_HEADERS,
OPENCV_ENABLE_ALLOCATOR_STATS,
WITH_IPP、
WITH_MSMF
其中没有的条目也不需要加了
如果需要contrib扩展库的需要在opencv_extra_modules_path这里选择 /opencv_contrib-3.4.2/modules文件夹
如此就配置完了,再次单击Configure按钮,如有出现红字,继续按照刚才所述下载文件,放入对应位置,不再报错后点击Generate,如有报错,继续下载,直至不报错即可
打开保存的文件夹位置,打开cmd命令提示符,转到该位置,执行minGW32-make -j 6 命令,最后一位数字代表调用的CPU核数,根据电脑配置自行设置,运行完毕后继续运行 minGW32-make install 来导出install文件夹,最终生成的install文件夹就是我们最终需要的编译目录,将该目录复制到其他文件夹后,其他的都可以删除了,接下来就是vscode的配置了。
最后用vscode打开一个文件夹,新建一个c++文件,运行一下会自动生成一个.vscode的文件夹,我们需要在其中新建三个文件,分别是c_cpp_properties.json,launch.json,tasks.json
文件中的具体内容如下,文件路径信息可以根据自己的位置修改
//c_cpp_properties.json
{
"configurations": [
{
"name": "win",
"includePath": [
"${workspaceFolder}/**",
"I:/opencv/342/vscode/include",
"I:/opencv/342/vscode/include/opencv2"
],
"defines": [],
"compilerPath": "I:/opencv/mingw64/bin/x86_64-w64-mingw32-g++.exe",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "${default}"
}
],
"version": 4
}
//launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "opencv debuge",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}\\Debugger\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"console": "externalTerminal",
"MIMode": "gdb",
"miDebuggerPath": "I:\\opencv\\mingw64\\bin\\gdb.exe",//自己进行设置
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": false
}
],
"preLaunchTask": "opencv342"
}
]
}
//tasks.json
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "opencv342",
"command": "I:/opencv/mingw64/bin/x86_64-w64-mingw32-g++.exe",
"args": [
"-g",
"${file}",
"-o",
"${workspaceFolder}\\Debugger\\${fileBasenameNoExtension}.exe",
//上面这个Debugger是我自己定义的,为了方便放置生成的exe文件
"I:/opencv/342/vscode/x64/mingw/bin/libopencv_world342.dll",
"-I",
"I:/opencv/342/vscode/include",
"-I",
"I:/opencv/342/vscode/include/opencv2",
],
"options": {
"cwd": "I:/opencv/mingw64/bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "new",
"showReuseMessage": true,
"clear": false
}
}
]
}
最后这里的 panel需要设为new,这样调试运行时能够新建窗口运行
以上设置完毕后,即可完美使用