博主之前都是使用Visual Studio 2017进行c++开发,目前小组开发统一使用vscode 进行开发和维护,因此去踩坑搭建本地的一个vscode开发环境。以下为搭建环境的整个过程记录。
1、软件和库选择
- vscode 下载地址:vscode下载
- Cmake-3.26.0-rc3 下载地址:CMake
- MinGW-W64 GCC-7.3.0,下载地址如下:Mingw64
- opencv4.5.3 source库 :下载地址如下所示:opencv源码下载地址,如果下载速度慢或者不成功可以从如下地址进行下载:opencv source lab
- Eigen-3.4.0库,下载地址:Eigen库下载
2、软件安装
2.1 vscode安装
直接点击下载好的vscode安装包安装即可:
2.2 cmake安装
2.2.1 下载cmake对应的zip包
2.2.2 解压到相应路径
建议放到c盘的Program Files
2.2.3 配置环境变量
打开我的电脑->属性->高级系统设置->环境变量,增加如下红框所示变量
2.2.4配置成功的标志
在cmd中输入cmake --version 出现如下情况表示配置成功
2.3 MinGW安装
2.3.1 下载x86_64-posix-silj并进行解压
首先选择下载地址下图所示repo进行下载
接着将压缩包解压到你自己的盘:
2.3.2 配置环境变量
打开我的电脑->属性->高级系统设置->环境变量,增加如下红框所示变量
2.3.3 配置成功的标志
在cmd中输入gcc -v 出现如下情况表示配置成功
2.4 opencv安装编译
vscode使用opencv需要先使用cmake进行opencv源码的编译
2.4.1 下载opencv并进行解压
2.4.2 cmake编译
2.4.2.1 打开cmake-gui.exe
找到存放cmake的位置,对应找到其中的gui位置
2.4.2.2 配置cmake基本参数
在where is the source code处配置需要编译的opencv源码位置,在where to build the binaries处配置存放编译后的源码位置,此处我建了一个opencv-4.5.3_x64_build文件夹进行存放。
2.4.2.3 点击configure,选择MinGW Makefiles、Specify native compilers
2.4.2.4 点击Next,编译器选择,C选择MinGW-w64的bin目录下gcc.exe,C++则选择g++.exe
2.4.2.5 点击Finish后,程序自动进行配置
-------------------------------一些troubleshoot方法-----------------------------
这一步配置可能因为网速问题导致有些库下载失败,可以在你生成目录打开CMakeDownloadLog.txt查看具体失败的库,如下所示:
CMakeDownloadLog.txt下载失败样例如下
#use_cache "D:/chorm-download/opencv-4.5.3/.cache"
#do_copy "opencv_videoio_ffmpeg.dll" "bab661341c30862fa88627130219c0a5" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/213fcd5d4897319a83207406036c4a5957fba010/ffmpeg/opencv_videoio_ffmpeg.dll" "D:/chorm-download/opencv-4.5.3_x64_build/3rdparty/ffmpeg"
#missing "D:/chorm-download/opencv-4.5.3_x64_build/3rdparty/ffmpeg/opencv_videoio_ffmpeg.dll"
# timeout on name lookup is not supported
# Trying 151.101.108.133...
# TCP_NODELAY set
# connect to 151.101.108.133 port 443 failed: Connection refused
# Failed to connect to raw.githubusercontent.com port 443: Connection refused
# Closing connection 0
解决方案:
复制上述txt中对应的dll下载路径,利用迅雷进行下载,并拷贝到opencv的源码的.cache/ffmpeg文件夹下(我的路径为:D:\chorm-download\opencv-4.5.3.cache\ffmpeg),并使用cmd中的命令求取独赢文件的MD5值,使用MD5+文件名称重新命名原文件名称
eg:
原文件名:opencv_videoio_ffmpeg_64.dll
更新后的文件名:
ac99f9767a83103c31709628af685924-opencv_videoio_ffmpeg_64.dll
其中ffmpeg_version.cmake的下载可以考虑先保存网页后进行名称后缀的更改
2.4.2.6 点击generate
2.4.2.6 完成后,进入之前自己创建的编译结果存放的文件夹,按住shift再按鼠标右键,选择在此进入powershell窗口。输入MinGW32-make -j4 开始编译,大致要20分钟。
2.4.2.7 编译完成后,再输入MinGW32-make install进行安装
2.4.2.8 环境配置
打开我的电脑->属性->高级系统设置->环境变量,增加如下红框所示变量
2.4 Eigen下载解压
- 从第一节所示位置下载如下的Eigen3.4.0版本的tar包
- 解压到某个文件下备用
3、vscode配置并使用
3.1 打开vscode软件,在你设定的代码目录下面建立一个.vscode文件夹
3.2 在.vscode文件夹下面分别建立三个json文件,分别为:c_cpp_properties.json,launch.json,tasks.json。
如下为具体的配置:
c_cpp_properties.json配置如下:
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"D:/personal/vs_project/eigen-3.4.0/**",
"D:/chorm-download/opencv-4.5.3_x64_build/install/include",
"D:/chorm-download/opencv-4.5.3_x64_build/install/include/opencv2",
"D:/chorm-download/opencv-4.5.3_x64_build/install/x64/mingw/lib",
"D:/personal/vs_project/eigen-3.4.0"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.17763.0",
"compilerPath": "D:\\chorm-download\\mingw64\\bin\\gcc.exe",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x64"
}
],
"version": 4
}
launch.json配置如下:
// https://code.visualstudio.com/docs/cpp/launch-json-reference
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示
"type": "cppdbg", // 配置类型,cppdbg对应cpptools提供的调试功能;可以认为此处只能是cppdbg
"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
"program": "${fileDirname}/${fileBasenameNoExtension}.exe", // 将要进行调试的程序的路径
"args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
"stopAtEntry": false, // 设为true时程序将暂停在程序入口处,相当于在main上打断点
"cwd": "${workspaceFolder}", // 调试程序时的工作目录,此为工作区文件夹;改成${fileDirname}可变为文件所在目录
"environment": [], // 环境变量
"externalConsole": true, // 使用单独的cmd窗口,与其它IDE一致;为false时使用内置终端
"internalConsoleOptions": "neverOpen", // 如果不设为neverOpen,调试时会跳到“调试控制台”选项卡,你应该不需要对gdb手动输命令吧?
"MIMode": "gdb", // 指定连接的调试器,可以为gdb或lldb。
"miDebuggerPath": "D:\\chorm-download\\mingw64\\bin\\gdb.exe", // 调试器路径,Windows下后缀不能省略,Linux下则不要
"setupCommands": [
{ // 模板自带,好像可以更好地显示STL容器的内容,具体作用自行Google
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": false
}
],
"preLaunchTask": "Compile" // 调试会话开始前执行的任务,一般为编译程序。与tasks.json的label相对应
}]
}
tasks.json配置如下
// {
// "version": "2.0.0",
// "tasks": [
// {
// "type": "shell",
// "label": "g++.exe build active file",
// "command": "D:\\chorm-download\\mingw64\\bin\\g++.exe",
// "args": ["-g",
// "${file}",
// "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe",
// "-I", "D:/chorm-download/opencv-4.5.3_x64_build/install/include",
// "-I", "D:/chorm-download/opencv-4.5.3_x64_build/install/include/opencv2",
// "-L", "D:/chorm-download/opencv-4.5.3_x64_build/install/x64/mingw/lib",
// "-l","opencv_core453",
// "-l","opencv_imgproc453",
// "-l","opencv_imgcodecs453",
// "-l","opencv_video453",
// "-l","opencv_ml453",
// "-l","opencv_highgui453",
// "-l","opencv_objdetect453",
// "-l","opencv_flann453",
// "-l","opencv_imgcodecs453",
// "-l","opencv_photo453",
// "-l","opencv_videoio453"],
// "options": {
// "cwd": "D:\\chorm-download\\mingw64\\bin"
// },
// "problemMatcher": [
// "$gcc"
// ],
// "group": {
// "kind": "build",
// "isDefault": true
// }
// }
// ]
// }
// https://code.visualstudio.com/docs/editor/tasks
{
"version": "2.0.0",
"tasks": [
{
"label": "Compile", // 任务名称,与launch.json的preLaunchTask相对应
"command": "D:\\chorm-download\\mingw64\\bin\\g++.exe", // 要使用的编译器,C++用g++
"args": [
"${file}",//当前文件名
"-o", // 指定输出文件名,不加该参数则默认输出a.exe,Linux下默认a.out
"${fileDirname}/${fileBasenameNoExtension}.exe",
"-g", // 生成和调试有关的信息
"-m64", // 不知为何有时会生成16位应用而无法运行,加上此条可强制生成64位的
"-Wall", // 开启额外警告
"-static-libgcc", // 静态链接libgcc,一般都会加上
"-finput-charset=UTF-8",
"-fexec-charset=GBK", // 生成的程序使用GBK编码,不加这条会导致Win下输出中文乱码;繁体系统改成BIG5
"-std=c++17", // 要用的语言标准,根据自己的需要修改。c++可用c++14
// 扩展参数
// -I 头文件目录
// -L 库文件目录
// -l 库文件
"-I", "D:/chorm-download/opencv-4.5.3_x64_build/install/include",
"-I", "D:/chorm-download/opencv-4.5.3_x64_build/install/include/opencv2",
"-I","D:/personal/vs_project/eigen-3.4.0",
"-L", "D:/chorm-download/opencv-4.5.3_x64_build/install/x64/mingw/lib",
"-l", "libopencv_calib3d453",
"-l", "libopencv_core453",
"-l", "libopencv_dnn453",
"-l", "libopencv_features2d453",
"-l", "libopencv_flann453",
"-l", "libopencv_gapi453",
"-l", "libopencv_highgui453",
"-l", "libopencv_imgcodecs453",
"-l", "libopencv_imgproc453",
"-l", "libopencv_ml453",
"-l", "libopencv_objdetect453",
"-l", "libopencv_photo453",
"-l", "libopencv_stitching453",
"-l", "libopencv_video453",
"-l", "libopencv_videoio453"
], // 编译的命令,其实相当于VSC帮你在终端中输了这些东西
"type": "process", // process是把预定义变量和转义解析后直接全部传给command;shell相当于先打开shell再输入命令,所以args还会经过shell再解析一遍
"group": {
"kind": "build",
"isDefault": true // 不为true时ctrl shift B就要手动选择了
},
"presentation": {
"echo": true,
"reveal": "always", // 执行任务时是否跳转到终端面板,可以为always,silent,never。具体参见VSC的文档
"focus": false, // 设为true后可以使执行task时焦点聚集在终端,但对编译C/C++来说,设为true没有意义
"panel": "shared" // 不同的文件的编译信息共享一个终端面板
},
"problemMatcher":"$gcc" // 捕捉编译时终端里的报错信息到问题面板中,修改代码后需要重新编译才会再次触发
// 本来有Lint,再开problemMatcher就有双重报错,但MinGW的Lint效果实在太差了;用Clang可以注释掉
}]
}
3.3 具体应用实例
此处使用一个简单的应用实例,进行opencv以及eigen库的使用情况:
在opencv-demo下面建立一个src文件夹,并新建一个opencv_demo.cpp文件夹,并加入如下c++运行代码.
代码如下:
#include<opencv2/opencv.hpp>
#include<opencv2/highgui.hpp>
#include<Eigen/Dense>
using namespace cv;
using Eigen::MatrixXd;
using Eigen::VectorXd;
int main(){
Mat img = cv::imread("D:/personal/model_and_code/img/adc.png");
cv::namedWindow("demo",cv::WINDOW_NORMAL);
cv::imshow("demo", img);
MatrixXd m = MatrixXd::Random(3, 3);
m = (m + MatrixXd::Constant(3, 3, 1.2)) * 50;
std::cout << "m =" << std::endl << m << std::endl;
VectorXd v(3);
v << 1, 2, 3;
std::cout << "m * v =" << std::endl << m * v << std::endl;
cv::waitKey(0);
system("pause");
return 0;
}
F5启动程序后,可以看到如下示例结果:
到这一步,大功告成,opencv和eigen库可以在vscode中开心的使用了。文章来源:https://www.toymoban.com/news/detail-441179.html
参考链接:
CMake编译OpenCV4.0时opencv_ffmpeg.dll等下载失败的解决思路总结
VSCode搭建OpenCV的c++环境(windows10)文章来源地址https://www.toymoban.com/news/detail-441179.html
到了这里,关于vscode安装配置opencv+eigen库并使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!