前言:主要本人刚学opencv想要一点点系统的学习下,但是因为疫情买了台二手笔记本只做开发用硬盘比较小,本来是想装vs的但考虑到vs比较大,并且我想以后应用arm做图像方面的比赛,所以就少不了自己搭建环境,就决定用mingw+vscode+cmake来搭建一个opencv4的环境
文件下载链接放在文章的末尾,大家自行下载。
1.**opencv4.2.0**软件压缩包 提取码(uvp8)
2.下载mingw64编译软件(TDM-GCC 9.2.0) mingw的安装选择(32 and 64 bit)一路next就好。
3.装载**cmake**软件3.9.0 提取码(ilb4)
使用 cmake 时要求安装 python3
,并且python 必须配好了环境变量。
注:将mingw和cmake都添加到环境变量中增添环境变量的方法下面会介绍。
1.右键我的电脑选择属性弹出控制面板
3.弹出系统属性的界面,直接选择环境变量
5.这里弹出编辑环境变量的窗口,点击新建 ,然后点浏览分别找到你装的cmake和mingw64的位置下的bin文件夹就可以
将 opencv-4.2.0-vc14_vc15.exe 解压到除C盘以外的地方(放在c盘可能cmake编译失败),解压完毕后在opencv的文件夹sources文件夹的旁边创建 空的 Mingw_build文件夹(名字可以随便取),主要是为了放编译后的文件。
这里就要用到之前装的cmake和mingw64了
<1>右键以管理员的方式打开cmake软件,然后放入相应的参数
第一栏放入你解压出来的opencv中的sources文件夹
第二栏放入你之前创建的存放编译文件的文件夹
点击configure选项就会配置你的编译选项
<2.1>如果你是第一次使用的话会需要配置编译器的类型和makefile的类型
<2.2>选择mingw Makefiles 和 specify native compilers
<3>点击next,需要我们选择c和c++的编译器,分别选择你之前装的mingw64的bin文件夹中的gcc和 g++ 即可
点击finshi等待完成,直到输出窗口看到 Configuring done。
<4>选择编译器选项
其中有1个取消勾选的(取消勾选)
等全部配置完成胡点击Generate等一会出现Generating done 就完成Makefile了。
前奏:编译之前要在MinGW64的bin的文件夹中加入**libmingwex-0.dll**文件(网上一搜有很多),如果你不加入的话可能会编译失败的。 提取码(l3mm)
编译开始:首先打开你的终端,一般cmd就可以(win+r输入cmd)
然后切换到你刚刚生成makefile文件的目录下,输入 mingw32-make等待编译。
等待编译完成(大概需要花费30分钟左右)后输入 minGW32-make install完成安装。
如果你这时直接写一个代码运行时根本行不通的,vscode需要一个 .vscode文件夹 作为它的环境文件。
首先先创建一个只写opencv的c++文件夹。
进入其中创建 .vscode 文件夹,.vscode主要包含三个文件,分别为c_cpp_properties.json文件、launch.json文件和tasks.json文件。
mingw的位置需要根据你的安装位置自己更改,如果你装了vscode就直接用vscode打开,然后ctrl+F2就可以实现替换。
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"E:/mingw64/include/*",
"E:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/include/c++/*",
"E:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/include/c++/x86_64-w64-mingw32/*",
"E:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/include/c++/backward/*",
"E:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/include/*",
"E:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/include-fixed",
"E:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/include",
"E:/opencv/opencv/mingw_build/install/include",
"E:/opencv/opencv/mingw_build/install/include/opencv2"
],
"defines": [],
"compilerPath":"E:/mingw64/bin/gcc.exe",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x64",
"browse": {
"path": [
"${workspaceFolder}",
"E:/mingw64/include/**",
"E:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/include",
"E:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/include/c++",
"E:/opencv/opencv/mingw_build/install/include"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
}
],
"version": 4
}
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示
"type": "cppdbg", // 配置类型,这里只能为cppdbg
"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
"program": "${workspaceFolder}/${fileBasenameNoExtension}.exe", // 将要进行调试的程序的路径
"args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
"stopAtEntry": false, // 设为true时程序将暂停在程序入口处,一般设置为false
"cwd": "${workspaceFolder}", // 调试程序时的工作目录,一般为${workspaceRoot}即代码所在目录 workspaceRoot已被弃用,现改为workspaceFolder
"environment": [],
"externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台
"MIMode": "gdb",
"miDebuggerPath": "E:/mingw64/bin/gdb.exe", // miDebugger的路径,注意这里要与MinGw的路径对应
"preLaunchTask": "g++", // 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
{
"version": "2.0.0",
"command": "g++",
"args": ["-g",
"-fexec-charset=GBK", // 处理mingw中文编码问题
"-finput-charset=UTF-8",// 处理mingw中文编码问题
"-std=c++11",
"${file}",
"-o",
"${fileBasenameNoExtension}.exe",
"-I", "E:\\opencv\\opencv\\build\\include",
"-I", "E:\\opencv\\opencv\\build\\include\\opencv2",
"-I", "E:\\opencv\\opencv\\build\\include\\opencv",
"-L", "E:\\opencv\\opencv\\Mingw_build\\lib",
"-l", "opencv_core420",
"-l", "opencv_imgproc420",
"-l", "opencv_imgcodecs420",
"-l", "opencv_video420",
"-l", "opencv_ml420",
"-l", "opencv_highgui420",
"-l", "opencv_objdetect420",
"-l", "opencv_flann420",
"-l", "opencv_imgcodecs420",
"-l", "opencv_photo420",
"-l", "opencv_videoio420"
], // 编译命令参数
"problemMatcher": {
"owner": "cpp",
"fileLocation": ["relative", "${workspaceRoot}"],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
},
"group": {
"kind": "build",
"isDefault": true
}
}
写入测试代码
#include
#include
#include
#include
using namespace std;
int main()
{
cout<<"hello opncv4.2.0"<
参考博客:
https://www.cnblogs.com/uestc-mm/p/12758110.html
https://blog.csdn.net/zhaiax672/article/details/88971248
https://blog.huihut.com/2018/07/31/CompiledOpenCVWithMinGW64/
可能你在搭建的时候会遇到很多问题,有很多可能都是版本不匹配导致的,所以建议大家用本文中我提到的版本,我把文件全部压缩了一份大家自行下载,当然文中的超链接也是可以下载的,要是其中有什么问题欢迎大家指正,注大家都早日成为大佬。
opecv4.2.0+mingw64+cmake3.9.0:https://download.csdn.net/download/weixin_44692694/12644340