本文主要做自学记录作用,若侵权留言删
参考文献:
VScode搭建OpenCV环境;
VS code配置C/C++、OpenCV(Windows);
将 VSCode 打造成 OpenCV 的 IDE(C++,window10 1803);
VSCODE属于编辑器,不带编译功能,因此需要借助MinGW,CMake来对OpenCV进行编译,编译的过程中,需要对各个工具的版本兼容进行对应统一,避免出现意外麻烦,因此推荐优先访问OpenCV-MinGW-Build。这里面有已经编译过的OpenCV库,可以直接下载使用。点击Configuration可以查看MinGW和CMake的对应关系
OpenCV | MinGW | CMake |
---|---|---|
3.3.1 | x86-5.3.0 | 3.9.2 |
3.4.1 | x86-5.3.0 | 3.9.2 |
3.4.1-x64 | x64-4.8.1-release-posix-seh-rev5 | 3.12.0 |
3.4.5 | x86-5.3.0 | 3.12.4 |
3.4.6 | x86-7.3.0 | 3.14.1 |
3.4.7 | x86-7.3.0 | 3.14.1 |
3.4.8-x64 | x64-7.0.0 | 3.16.0-rc3 |
3.4.9 | x86-7.3.0 | 3.14.1 |
4.0.0-alpha-x64 | x64-4.8.1-release-posix-seh-rev5 | 3.12.0 |
4.0.0-rc-x64 | x86_64-8.1.0-posix-seh-rt_v6-rev0 | 3.12.4 |
4.0.1-x64 | x86_64-8.1.0-posix-seh-rt_v6-rev0 | 3.12.4 |
4.1.0 | x86-7.3.0 | 3.14.1 |
4.1.0-x64 | x86_64-8.1.0-posix-seh-rt_v6-rev0 | 3.14.1 |
4.1.1-x64 | x86_64-8.1.0-posix-seh-rt_v6-rev0 | 3.14.1 |
4.5.0-with-contrib | x86-7.3.0 | 3.18.4 |
4.5.2-x64 | x86_64-8.1.0-posix-seh-rt_v6-rev0 | 3.18.4 |
在VSCODE官网选择自己系统对应版本下载:
双击下载的exe文件手一路下一步并记住自己所安装的路径,建议默认路径:
添加环境路径需要重启,此时重启电脑。
在扩展模块中输入C++找到C/C++插件,点击install安装C/C++插件。
在扩展模块中输入Chinese找到Chinese插件,点击install安装Chinese插件。
点击进入MinGW官网,MinGW的安装分为在线安装和离线安装。
离线安装是一个软件压缩包,点击解压缩可以看到
在线安装是一个exe,双击mingw-w64-install.exe点击Next选择Version,Architecture,Threads,Exception等信息:
(版本)Version: 选择 8.1.0
(架构)Architecture: 32位cpu 选择 i686,64位cpu 选择 x86_64
(线程模式)Threads: 如果使用 posix api 选择 posix,如果使用 win32 api 选择win32
(异常处理机制) Exception: 有三种,根据机器情况进行选择
SJLJ (setjmp/longjmp) 兼容性好,32位或64位架构都可以使用,但速度慢
SEH (zero overhead exception) 速度很快,但只能用于64位架构(编译版本)Build revision 选择最高的
点击Next后选择安装路径:C:\mingw64;这里路径不使用默认路径,因为最好不要有空格符号。
不推荐使用在线安装模式,因为下载奇慢。
参考Installation from source for Windows with MinGW-W64。
完成安装后,添加C:\mingw64\mingw64\bin路径到Path路径中。
为了检查MinGW是否成功安装,打开cmd输入:
mingw32-make --version
g++ --version
网络上部分博客有写到:
gcc --version
以上验证都表明MinGW已经安装配置成功。
进入官网GitHub选择对应的CMake版本进行下载,双击msi文件进行安装,一路Next直到:
根据自己情况选择是否添加到环境路径。这里选择第二个。同时记住自己的安装路径:C:\Program Files\CMake\
完成安装后,在MinGW配置路径可以知道这里CMake已经添加进去了。
打开cmd输入:
cmake --version
以上验证都表明CMake已经安装配置成功。
在OpenCV官网下载Windows版本。
双击exe文件安装在指定路径:
这里没有使用默认路径,据其他博客说到可能CMake时会报错(可能时权限问题),因此这里没做验证直接更改,在D:\Users\xxx\Desktop\opencv_452\opencv\build\x64路径下新建一个文件夹,命名为MinGW(可自定义)。
cmake的过程中会需要下载一批文件,若无法的情况下载C:\Windows\System32\drivers\etc\hosts文件最后追加:151.101.72.133 raw.githubusercontent.com这些文件都在raw.githubusercontent.com上,如果不修改一下hosts,许多文件很可能会下载失败。 已验证,毫无效果,需要自己手动下载安装
打开cmake-gui后选择源文件路径和保存路径:
Where is the source code 选择如下:
Where to build the binaries选择如下:
Makefiles保存路径:D:\Users\xxx\Desktop\opencv_452\opencv\build\x64\MinGW
配置完成后点击Configure,弹出窗口选择配置如下。
注意下拉框选择MinGW Makefiles,之后一路Next选择MinGW中的文件,选择MinGW中的C 和 C++编译的exe程序:
选择文件所在位置如下:
选择完成后点击Finish,耐心等待进度条完毕:
执行过程中消息框中会出现一堆红色信息,这是正常的,最后显示Configure done。
这里第一次config的完成后,search 中查找一些参数进行相应操作:
输入wo查找BUILD_opencv_world,勾选:
输入opengl,查找WITH_OPENGL勾选:
输入exa,查找BUILD_EXAMPLES勾选:
输入python,查找BUILD_opencv_python3勾选
输入CPU,查找CPU_DISPATCH选空:
输入mo,查找OPENCV_EXTRA_MODULES_PATH,当额外添加contrib内容时添加:
输入ipp,查找WITH_IPP不勾选:
输入head,查找ENABLE_PRECOMPILED_HEADERS不勾选:
输入ms,查找WITH_MSMF不勾选:
输入java,查找BUILD_JAVA、BUILD_opencv_java_bindings_generator不勾选:
这些操作完成后,再次点击Configure,若上面仍有红色则再一次Configure直到没有为止:
前面修改了host文件,个人觉得并没有什么用处,因此此处对其进行删除。找到编译目标文件夹MinGW中的CMakeDownloadLog.txt文件:
双击打开后发现仍有部分文件未下载,关于文件中内容的解释请参考之前博客。
我们需要通过下载源地址将文件放在文件暂存路径里面,命名则是“check_md5”栏的文件名。其中 .cmake 和 .i 文件需要右击另存为来保存。所有缓存文件在源文件下的 .cache 文件夹中:(这里有不明白的可以留言或者私信询问)
操作完成后再次点击Configure:
此时在该区域不再爆红,则可以进行Generate操作:
通过win+r输入cmd进入终端
D:
cd D:\Users\humeme\Desktop\opencv_452\opencv\build\x64\MinGW
minGW32-make
如果报错可查阅下面的网址帮助:https://blog.huihut.com/2018/07/31/CompiledOpenCVWithMinGW64/,一般问题都是可以通过勾选和去勾选解决的,回到CMake-gui页面重新进行Configure和Generate后,重新输入minGW32-make进行编译。
中间出现一次关于opencv-python 的错误,但在上面网站未找到解决方案,因此,不勾选python相关模块后重新编译完成。
完成后输入。
mingw32-make install
以上就完成了cmake对OpenCV的编译过程,并把目标文件和可执行文件install在MinGW文件下。
添加MinGW-bin路径到环境路径下
D:\Users\xxx\Desktop\opencv_452\opencv\build\x64\MinGW\bin
新建文件夹后打开。
VSCODE 的使用指南请参考
【VS Code 搭建轻量美观的 C/C++开发环境】
创建hello_opencv.cpp文件并输入相关代码,准备相关验证图片:
#include
#include
#include
using namespace cv;
int main()
{
Mat img=imread("111.jpg");
imshow("image",img);
waitKey();
return 0;
}
新建文件夹,并创建tasks.json,launch.json,c_cpp_properties.json等三个文件:
tasks.json内容如下:
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe 生成活动文件",
"command": "g++.exe",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"D:/Users/humeme/Desktop/opencv_452/opencv/build/x64/MinGW/install/x64/mingw/bin/libopencv_world452.dll"
"-I",
"D:/Users/humeme/Desktop/opencv_452/opencv/build/x64/MinGW/install/include",
"-I",
"D:/Users/humeme/Desktop/opencv_452/opencv/build/x64/MinGW/install/include/opencv2",
],
"options": {
"cwd": "C:/mingw64/mingw64/bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}
launch.json内容如下:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "g++.exe - 生成和调试活动文件",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "C:/mingw64/mingw64/bin/gdb.exe",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: g++.exe 生成活动文件"
}
]
}
c_cpp_properties.json内容如下:
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"D:/Users/humeme/Desktop/opencv_452/opencv/build/x64/MinGW/install/include",
"D:/Users/humeme/Desktop/opencv_452/opencv/build/x64/MinGW/install/include/opencv2"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.17763.0",
"compilerPath": "C:/mingw64/mingw64/bin/g++.exe",
"intelliSenseMode": "windows-gcc-x64"
}
],
"version": 4
}
最后按F5会生成调试,在文件夹下生成一个exe文件。