• 【配置】win10+vscode+opencv4+mingw+cmake


    写在前面

    我个人比较喜欢用vscode写代码,以前是感觉写python很方便,后面即便要写C++也不想换编辑器了。相较于vs来说,在vscode上配置opencv的并不算多,在配置的过程中也踩了很多坑,因此写一篇博客记录一下,希望能有帮助。
    在vscode上配置opencv之前,先默认已经能够在vscode上实现C++代码的编写和运行了,如果不可以的话,可以看这篇文章:VSCode+win10 C++多文件编译调试

    配置

    mingw64+cmake

    mingw64在之前那篇文章里已经说过如何安装了,非常简单方便。这里就不再叙述。
    对于cmake来说,可以直接在官网下载软件进行安装:cmake官网
    在这里插入图片描述
    下载完后,找出它的cmake-gui文件,打开如下:
    在这里插入图片描述

    opencv

    在这里下载软件:opencv下载
    选择自己想要的就行,我选的是opencv4.5.2,选择这个:
    在这里插入图片描述
    点击它之后会进行解压操作,放在自己想放的位置就行。
    这个时候文件里应该是这样的:
    在这里插入图片描述
    我们返回到cmake-gui中,source code和binaries的路径选择如下:
    在这里插入图片描述
    注意的是,这里的MinGW是自己创建的,也就是是一个空的文件夹,你可以取任何名字,但注意的是,后续所有的配置和设置中,都别忘了把MinGW换成你自己取的名字。
    然后点击Configure,出现如下界面,选择这些选项:
    在这里插入图片描述
    在选择next,把你之前mingw64下gcc和g++的路径放上去:
    在这里插入图片描述
    点击Finish。这个时候他就会开始自己配置,等到他配置完了之后,界面上应该是红色的,建议往下翻一番,找到BUILD_opencv_world,如果他选择了的话就把勾取消了,我这里是默认不选的:
    在这里插入图片描述
    然后再点一遍Configure,配置完后,点击Generate(注意,就算BUILD_opencv_world没被选也要再点一遍Configure)
    生成完后,你打开刚刚创建的那个MinGW文件,会发现里面多了很多东西。你在这个文件夹下打开powershell,输入命令mingw32-make.exe,这个时候就会开始编译了。建议用多线程,比如mingw32-make.exe -j 4,这样会快一些。这边的时长大概在30min左右。

    环境变量

    编译完毕后,把以下三个环境变量添加进去:
    在这里插入图片描述
    有的系统需要重新启动才能生效,有的不需要,自行决定即可。

    vscode

    我们假设已经能够在终端上打印出“hello world”了(如果不可以,请看VSCode+win10 C++多文件编译调试),那么我们把这一段复制进去:

    #include <iostream>
    #include <opencv2/opencv.hpp>
    #include <opencv2/highgui.hpp>
    
    using namespace cv;
    using namespace std;
    
    int main()
    {
        cout<<"hello world..."<<endl;
        Mat img=imread("C:\\Users\\cxm\\Desktop\\test.png");
        cv::imshow("image",img);
        cv::waitKey();
        return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    现在你运行肯定会出错的,因为还没有把opencv添进去。打开你的tasks.json,更改如下:

    {
        "tasks": [
            {
                "type": "cppbuild",
                "label": "C/C++: g++.exe 生成活动文件",
                "command": "D:\\softwares\\mingw64\\bin\\g++.exe",
                "args": [
                    "-fdiagnostics-color=always",
                    "-g",
                    "${file}",
                    "-I", "D:\\softwares\\opencv\\build\\include",
                    "-I", "D:\\softwares\\opencv\\build\\include\\opencv2",
                    "-L", "D:\\softwares\\opencv\\build\\x64\\MinGW\\lib",
                    "-l", "libopencv_core452",
                    "-l", "libopencv_imgproc452",
                    "-l", "libopencv_imgcodecs452",
                    "-l", "libopencv_video452",
                    "-l", "libopencv_ml452",
                    "-l", "libopencv_highgui452",
                    "-l", "libopencv_objdetect452",
                    "-l", "libopencv_flann452",
                    "-l", "libopencv_imgcodecs452",
                    "-l", "libopencv_photo452",
                    "-l", "libopencv_videoio452",
                    "-o",
                    "${fileDirname}\\${fileBasenameNoExtension}.exe"
                ],
                "options": {
                    "cwd": "${fileDirname}"
                },
                "problemMatcher": [
                    "$gcc"
                ],
                "group": {
                    "kind": "build",
                    "isDefault": true
                },
                "detail": "调试器生成的任务。"
            }
        ],
        "version": "2.0.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
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    注意:
    1. 如果你有自定义的头文件,依照按照之前那篇博客所说的方式添加进去
    2. 注意我的编号都是452,你可以打开你的opencv\\build\\x64\\MinGW\\iib文件,看一下你的编号是什么,这里一定一定一定要更改掉,千万不要一股脑就直接复制不管了!!!
    3. 路径换成自己的

    然后,你在.vscode下再创建一个文件叫c_cpp_properties.json,复制如下内容:

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

    注意把路径换成的

    这个时候,你再在main.cpp下运行,就没问题了

  • 相关阅读:
    职称对于建筑类行业影响有多大
    Linux嵌入式I2C协议笔记
    Clickhouse相关 LSM
    测试基础:Nosql数据库之Redis
    独立站SEO推广的正确打开方式
    Domino多瑙河版本早期访问版本新特性
    windows系统编程2——内存管理和网络
    【华为机试真题 Python实现】统计文本数量
    Qt-FFmpeg开发-视频播放(1)
    Linux驱动开发笔记(六):用户层与内核层进行数据传递的原理和Demo
  • 原文地址:https://blog.csdn.net/qq_41433316/article/details/124972450