环境配置:OpenCV(c++)

# 配置cpp opencv 的 Windows vscode编译环境

> :link: 链接:
>
> mingw:https://pan.quark.cn/s/cb6d3cb6d4cf
>
> opencv:https://opencv.org/releases/
>
> cmake:https://pan.quark.cn/s/d40f6922312c

1、下载mingw压缩包,并解压mingw,把`X:\xxx\mingw64\bin`路径添加到系统环境变量

2、下载opencv源码,并在那个目录旁边新建一个build文件夹

3、下载cmake,打开cmake,第一行选择opencv源码根目录路径,第二行选刚刚创建的build文件夹路径

![](https://s2.loli.net/2023/02/26/mhaWPpOgb4Ioz1k.png)

4、点选`Configure`,在下拉框选`MinGW Makefiles`,单选栏选`Use default native compilers`,开始cmake,注意:

- 勾选BUILD_EXAMPLES、BUILD_opencv_world,WITH_OPENGL
- 不勾选WITH_IPP、WITH_MSMF和ENABLE_PRECOMPILED_HEADERS(如果有的话),CPU_DISPATCH选空。

然后,界面会红一下,再点一次`Configure`即可。

![](https://s2.loli.net/2023/02/26/X7jBS3IRe8HAWKZ.png)

5、在cmake好后,打开cmd,cd进入opencv的build目录,执行` MinGW32-make -j8 `开始编译

> 参数j是多线程数,可以视情况选`j4`、`j8`、`j16`

6、编译好之后,` minGW32-make install `安装,然后添加环境变量,比如我的是`D:\code_env\opencv_460_build\bin`

7、前往vscode,去应用商店下载微软的c++插件,然后自己找个目录是放代码的,用vscode打开这个文件夹。 在此文件夹下新建一个.vscode文件夹,再继续新建三个.json文件(`tasks.json`,`launch.json`,`c_cpp_properties.json`)。

```json
//c_cpp_properties
{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**",
                "D:/code_env/mingw64/include/**",
                "D:/code_env/opencv_460_build/install/include",
                "D:/code_env/opencv_460_build/install/include/opencv2"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "D:/code_env/mingw64/bin/g++.exe",
            "cStandard": "c11",
            "cppStandard": "c++11",
            "intelliSenseMode": "windows-gcc-x64"
        }
    ],
    "version": 4
}
```

```json
//tasks
{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cppbuild",
            "label": "opencv460", //任务名称,要和launch.json的"preLaunchTask"字段对应
            "command": "D:/code_env/mingw64/bin/g++.exe", //编译器路径
            "args": [
                "-g", //控制台编译时输入的-g,表示生成调试有关信息,编译生成可执行文件调试
                "-std=c++11",
                // "-static",
                "-fexec-charset=GBK",// 令mingw按GBK编码⽣成exe⽂件 GBK
                "-finput-charset=UTF-8",// 令mingw按UTF-8编码处理(此参数可以不设置)//
                "${file}",//要编译的文件,默认只能编译单个文件
                "-o", //指定生成的可执行文件的名字,编译不加 -o 默认生成就是a.exe
                "fileDirnameRelease{fileBasenameNoExtension}.exe",
                "-I","D:/code_env/opencv_460_build/install/include",
                "-I","D:/code_env/opencv_460_build/install/include/opencv2",
                "-I ${fileDirname}\..\include",//添加本地文件的头文件路径,否则提示头文件找不到
                "-L","D:/code_env/opencv_460_build/bin",
                "-l","libopencv_world460",
            ],
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true // 开启编译快捷键, ctrl + shift + B
            },
            "detail": "编译器: D:/code_env/mingw64/bin/g++.exe"
        }
    ]
}
```

```json
//launch
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "opencv460",
            "type": "cppdbg",
            "request": "launch",
            "program": "workspaceFolderRelease{fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,  //这里如果为 false,则说明调试直接运行。(反之则停止)
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false, //是否调用外部cmd
            "MIMode": "gdb",
            "miDebuggerPath": "D:/code_env/mingw64/bin/gdb.exe",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": false
                }
            ],
            "preLaunchTask": "opencv460"
        }
    ]
}
```

然后可以写代码了

```cpp
#include<opencv2/opencv.hpp>
#include<iostream>
int main()
{
    cv::Mat img;
    cv::VideoCapture capture(0);
    int key;
    while(true){
        capture >> img;
        cv::imshow("test", img);
        key=cv::waitKey(30);
        if(key==27){
            break;
        }
    }
    return 0;
}
```

使用<kbd>ctrl</kbd>+<kbd>shift</kbd>+<kbd>b</kbd>运行。或按<kbd>F5</kbd>运行也可以。一般来说,已经配置完毕了。
原文链接:https://tuoyou-hao.github.io/2023/02/26/env_build_win_cv_cpp_vscode/

posted @   拓佑豪  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示