• 【VSCode】【OpenCv】Windows平台下VSCode + OpenCv + minGw环境搭建-C++


    参考链接:VScode搭建Opencv(C++开发环境)

    1. 软件准备

    2. 配置环境变量

    将上述下载的MinGw、CMake、OpenCv解压到指定文件夹内,本机测试都放在D:\IDE文件夹内,文件路径如下:


    MinGwD:\IDE\MinGw
    在这里插入图片描述


    CMakeD:\IDE\cmake
    在这里插入图片描述


    OpenCvD:\IDE\opencv452\opencv
    在这里插入图片描述


    在系统环境变量path中添加MinGw、CMake:

    • MinGw:D:\IDE\MinGw\bin
    • CMake:D:\IDE\cmake\bin
      在这里插入图片描述
      检查MinGw、CMake环境是否OK。
      打开cmd命令窗口,输入gcc -v判断MinGw环境,输入cmake -version判断CMake环境。显示如下表示环境配置成功。
      在这里插入图片描述

    3. 使用CMake编译Opencv

    1. CMake/bin文件夹下找到cmake-gui.exe,双击打开。
      在这里插入图片描述
    2. 设置第一个路径(Where is the source code)是opencv的源码路径,第二个路径(Where to build the binaries)是生成的文件的路径(手动创建ming文件夹)。
      在这里插入图片描述
    3. 点击Configure,然后选择使用MinGw MakeFiles作为编译器,并选择Specify native compliers,点击next继续,

    在这里插入图片描述
    在这里插入图片描述
    4. CompliersC选择mingw/bin文件夹下的gcc.exe,C++选择mingw/bin文件夹下的g++.exe,然后点击finish继续。
    在这里插入图片描述
    5. 等完成后可能会有红色的框表示失败了,这时候看一下CMakeDownloadLog.txt文件,应该是有几个文件没有下载下来,可以手动下载,然后把它们放到指定文件夹内并重命名。大概就是这几个文件需要手动下载:opencv_videoio_ffmpeg.dllopencv_videoio_ffmpeg_64.dllade-0.1.1f.zipffmpeg_version.cmake

    下载失败解决方案可参考:CMake编译OpenCV4.0时opencv_ffmpeg.dll等下载失败的解决思路总结
    国内访问受限,GitHub Proxy可以下载需要的文件。

    1. 下载完成后再重新点击Configure,等待完成即可。如果完成后仍然还有红色框出现,不要着急,再重新点击Configure即可。
    2. 执行完后,把python相关的都取消勾选,
      WITH_IPPWITH_MSMFENABLE_PRECOMPILED_HEADERS取消勾选;
      BUILD_opencv_worldWITH_OPENGLBUILD_EXAMPLES选择勾选,
      CPU_DISPATCH选空。
    3. 上述操作完成后点击Generate,直到操作完成。
      在这里插入图片描述

    4. make

    重新打开cmd窗口,进入刚刚生成的mingw文件夹,执行命令:minGW32-make -j 4
    没有出错,继续执行命令:minGW32-make install
    然后添加环境变量:
    在这里插入图片描述

    5. VSCode配置并测试

    1. 新建一个文件夹,命名为Hello-opencv
    2. 使用VSCode打开该文件夹;
    3. 在该文件夹下新建一个文件,命名为test.cpp;
    4. 编写如下代码,记得该文件夹下放一个图片;
    #include 
    #include 
    
    using namespace cv;
    using namespace std;
    
    int main()
    {
        std::string filename = "1.jpg";
        cv::Mat srcimg = cv::imread(filename.data());
        if (!srcimg.empty())
        {
            cv::namedWindow("test", cv::WINDOW_NORMAL);
            cv::imshow("test", srcimg);
            cv::waitKey(0);
        }
        else
        {
            printf("load image fail!\n");
            getc(stdin);
        }
    
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    1. 点击调试 C/C++文件,选择带g++.exe,会出现提示***存在错误,点击中止即可;
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
    2. Hello-opencv文件夹下会手动创建.vscode文件夹,.vscode文件夹下手动创建三个文件:c_cpp_properties.jsonlaunch.jsontasks.json,然后按照如下编辑这些json文件。这些字段的具体含义可参考:VSCode Variables Reference

    这三个文件也可以自动生成,这里只展示手动创建的过程。
    路径要根据自己电脑设置的路径填写。

    c_cpp_properties.json

    {
        "configurations": [
            {
                "name": "win",
                "includePath": [
                    "${workspaceFolder}/**",
                    "D:\\IDE\\opencv452\\opencv\\build\\x64\\mingw\\install\\include",
                    "D:\\IDE\\opencv452\\opencv\\build\\x64\\mingw\\install\\include\\opencv2"
                ],
                "defines": [],
                "compilerPath": "D:\\IDE\\MinGw\\bin\\g++.exe",
                "cStandard": "c11",
                "cppStandard": "c++17",
                "intelliSenseMode": "${default}"
            }
        ],
        "version": 4
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    tasks.json

    
    {
        "version": "2.0.0",
        "tasks": [
            {
                "type": "shell",
                "label": "opencv4.5.2",
                "command": "D:\\IDE\\MinGw\\bin\\g++.exe",
                "args": [
                    "-g",
                    "${file}",
                    "-o",
                    "${workspaceFolder}\\RBin\\${fileBasenameNoExtension}.exe",
                    // RBin是自定义的文件夹名,会把生成的EXE放在该文件夹下,要手动创建RBin文件夹
                    // 下面的opencv路径根据自己的路径修改
                    "D:\\IDE\\opencv452\\opencv\\build\\x64\\mingw\\bin\\libopencv_world452.dll",
                    "-I",
                    "D:\\IDE\\opencv452\\opencv\\build\\x64\\mingw\\install\\include",
                    "-I",
                    "D:\\IDE\\opencv452\\opencv\\build\\x64\\mingw\\install\\include\\opencv2",
                ],
                "options": {
                    "cwd": "D:\\IDE\\MinGw\\bin"
                },
                "problemMatcher": [
                    "$gcc"
                ],
                "group": {
                    "kind": "build",
                    "isDefault": true
                }
            }
        ]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    launch.json

    {
        // 使用 IntelliSense 了解相关属性。 
        // 悬停以查看现有属性的描述。
        // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
        "version": "0.2.0",
        "configurations": [
            {
                "name": "opencv debuge",
                "type": "cppdbg",
                "request": "launch",
                "program": "${workspaceFolder}\\RBin\\${fileBasenameNoExtension}.exe",
                "args": [],
                "stopAtEntry": false, // true表示运行到main()函数的第一行,可以调试;false表示直接运行,不会再main()函数的第一行停止,除非设置了断点
                "cwd": "${workspaceFolder}",
                "environment": [],
                "externalConsole": true,//是否调用外部cmd
                "MIMode": "gdb",
                "miDebuggerPath": "D:\\IDE\\MinGw\\bin\\gdb.exe",//自己进行设置
                "setupCommands": [
                    {
                        "description": "为 gdb 启用整齐打印",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": false
                    }
                ],
                "preLaunchTask": "opencv4.5.2",
                "console": "integratedTerminal",
                "justMyCode": true
            }
        ],
        
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    1. 转到test.cpp编辑界面,然后按F5,如果当前路径下(Hello-open)没有图片,则会提示load image fail!;如果路径下有图片,会显示图片。
      这两种情况都表示配置已经完成,以后如果在其它文件夹下开发,可以直接把.vscode文件夹拷过去。
      在这里插入图片描述
      在这里插入图片描述

    6. 注意事项

    如下是本机测试时出现的问题。

    1. cmake添加了环境变量但是cmd窗口中输入命令提示不是内部或外部命令
      添加环境变量后需要重新打开cmd;
    2. 一定要记得CMake编译时,Configure完成后一定要generate!!!
    3. 选择config的编译器时一定要选对。这个我第一次配置的时候选错了,后面执行 minGW32-make -j 4命令时总是提示Makefile:32: *** missing separator. Stop.,找了好多解决方案都不行,最后重新来一遍才发现。
    4. python等要取消勾选
    5. 如果第二次configure还是有红色的,不要慌,再点击configure,直到没有红色出现。
    6. 第一次configure出现红色的,查看CMakeDownloadLog.txt,下载几个需要的文件;然后把它们放入到对应的路径下。
    7. 运行时要手动创建RBin文件夹。
    8. 以.vscode所在目录(测试的Hello-opencv\)为当前工作路径。
    9. 环境变量中的opencv路径一定要写对
    10. 调用其它文件的函数时,要把头文件和源文件都包含进去。这个是后面写其它代码的时候一个文件要调用另一个文件内的函数,需要把那个函数声明和定义的文件都包含在内。
      如下:
      b.h
    void b_b();
    
    • 1

    b.cpp

    void b_b()
    {
    	// 函数实现
    }
    
    • 1
    • 2
    • 3
    • 4

    a.cpp

    // a.cpp中要包含函数b_b()的声明和定义的文件
    #include "b.h"
    #include "b.cpp"
    
    int main()
    {
    	b_b();  // 在b.h中声明的函数
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  • 相关阅读:
    时间轮算法
    MySQL与openGauss 时间操作比较分析
    T1082 求小数的某一位 (信息学一本通C++)
    彻底理解Java并发:Java线程
    算法题集:数学问题--数字黑洞(c/c++)
    C++ template 学习笔记
    数据库系列:MySQL索引优化总结(综合版)
    【PCL库+ubuntu+C++】1. 点云界的hello world!
    亚马逊、ozon店铺排名对于卖家来说有多重要?自养号是关键
    “第四十三天”
  • 原文地址:https://blog.csdn.net/sinat_41752325/article/details/127548059