vscode安装配置opencv+eigen库并使用

博主之前都是使用Visual Studio 2017进行c++开发,目前小组开发统一使用vscode 进行开发和维护,因此去踩坑搭建本地的一个vscode开发环境。以下为搭建环境的整个过程记录。

1、软件和库选择

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中开心的使用了。

参考链接:
CMake编译OpenCV4.0时opencv_ffmpeg.dll等下载失败的解决思路总结
VSCode搭建OpenCV的c++环境(windows10)

猜你喜欢

转载自blog.csdn.net/caobin_cumt/article/details/129216401