vscode 编译安装c++版opencv

vscode是一个轻量级的代码编辑器,但是它没有编译器,因此配置c++和opencv的过程很痛苦。反反复复装了3天,终于把环境配好了。显示出来图片的那一刻,我哭了~
记录一下整个踩坑过程,也分享给需要的朋友。

默认大家已经配好了c++环境。

1. 下载

需要下载的内容有:

1.1 opencv源码

下载网址:opencv官网。笔者下载的是4.5.3版本,点击source即可下载到本地。
vscode 编译安装c++版opencv_第1张图片

opencv-Contrib

opencv的扩展项,包含了一些CUDA图像处理模块以及其他图像处理模块。非必须,按需要决定是否下载

1.2 cmake编译软件

下载地址cmake官网下载地址。笔者下载的版本是3.21.1。

1.3 mingw64

mingw64可以在开源网站下载。
vscode 编译安装c++版opencv_第2张图片笔者下载的是8.1.0版本的压缩包。
vscode 编译安装c++版opencv_第3张图片

2.解压&安装

2.1 cmake

cmake不需要安装,直接解压即可。

2.2 mingw64

mingw64也不需要安装,解压即可。但是需要配置环境变量,将所在目录下的bin目录添加到系统环境变量中。
在这里插入图片描述
vscode 编译安装c++版opencv_第4张图片

需要注意的是,mingw64的路径下必须是全英文,而且路径中不能有空格,不能有空格,不能有空格!之前笔者把mingw64放在了Problem File文件夹下,结果在编译的时候找不到路径。报了**D:\Problem File\mingw64\bin\windres.exe: preprocessing failed.**在这里插入图片描述

2.3 opencv

opencv下载的是源码,无需安装。创建一个文件夹opencv,将源码解压到该文件夹下。

3. 编译opencv

3.1 cmake编译opencv

如图,在源码文件夹同级目录下创建一个opencv_build文件夹,用来编译opencv。这里,opencv-4.5.3是解压的源码。
vscode 编译安装c++版opencv_第5张图片
打开cmake文件夹的bin目录,双击cmake-gui,打开gui界面。
vscode 编译安装c++版opencv_第6张图片

点击1,选择opencv源码路径。
点击2,选择编译结果存放的目录,该目录需要是一个空目录。
点击3Configure,开始编译。中间会有进度条显示,当编译结束后,会显示Configure done。
然后在显示红色的4这里,选中WITH_OPENGL,选中BUILD_opencv_world可以把所有的组件综合到opencv_world453.dll中,方便后续添加依赖项。取消勾选WITH_IPP、取消勾选ENABLE_PRECOMPILED_HEADERS、取消勾选OPENCV_GENERATE_SETUPVARS可以解决下图警告。
vscode 编译安装c++版opencv_第7张图片
再次点击Configure编译,直到1区域全部变成白色,2区域没有红色的warning警告。
vscode 编译安装c++版opencv_第8张图片
如果遇到警告FFMPEG: Download failed: 6;“Couldn‘t resolve host name“,参考博客中的解决办法,直到所有的红色警告消失。点击Generate。完成后,2区域会显示done。

3.2 mingw64编译opencv

打开opencv_build文件夹,右键单击选择在终端打开。
vscode 编译安装c++版opencv_第9张图片
输入mingw32-make -j4,回车开始编译。用make -j带一个参数,是为了加速make。表示并行编译,比如在一台双核的机器上,完全可以用make -j4,让make最多允许4个编译命令同时执行,这样可以更有效的利用CPU资源。vscode 编译安装c++版opencv_第10张图片
到这一步,恭喜你编译成功。
vscode 编译安装c++版opencv_第11张图片
接下来,输入mingw32-make install,进行安装
vscode 编译安装c++版opencv_第12张图片
执行这一步时,需要管理员权限。如果刚才打开cmd时没有申请管理员权限,会报Permission denied
vscode 编译安装c++版opencv_第13张图片
这时需要把当前终端关闭。在开始栏搜索cmd,以管理员身份运行。
vscode 编译安装c++版opencv_第14张图片
cd到你build opencv的文件目录下,重新执行上述install命令。
vscode 编译安装c++版opencv_第15张图片
感受一下成功的喜悦~。

3.3 添加环境变量

把编译好的bin目录添加进环境变量。这里,C:\work\opencv\opencv_build是刚才编译的目录。

C:\work\opencv\opencv_build\bin
C:\work\opencv\opencv_build\install\include
C:\work\opencv\opencv453_build\install\x64\mingw\bin

vscode 编译安装c++版opencv_第16张图片

4. vscode中配置opencv

4.1 创建一个新工程

vscode本身没有新建项目的选项,所以要先创建一个空的文件夹。
创建一个空文件夹
打开vscode,
vscode 编译安装c++版opencv_第17张图片
点击File->open folder。在弹出的文件管理器中,打开文件夹。
vscode 编译安装c++版opencv_第18张图片

4.2 配置.vscode

点击这里,添加文件夹,命名为.vscode
vscode 编译安装c++版opencv_第19张图片
点击.vscode文件夹,点击红框生成新的文件。需要四个文件:
vscode 编译安装c++版opencv_第20张图片
需要四个文件:
vscode 编译安装c++版opencv_第21张图片
接下来,复制对应的文件内容:
setting.json

{
    "C_Cpp.errorSquiggles": "enabled",
    "C_Cpp.default.includePath": [
    	// 下面的两个路径需要改为自己的路径。C:/work/opencv/opencv453_build是我编译opencv的路径
        "C:/work/opencv/opencv453_build/install/x64/mingw/lib",
        "C:/work/opencv/opencv453_build/install/include/"
    ],
    "code-runner.executorMap": {
        
        "c": "cd $dir && gcc '$fileName' -o '$fileNameWithoutExt.exe' -Wall -g -O2 -static-libgcc -std=c11 -fexec-charset=UTF-8 && &'$dir$fileNameWithoutExt'",

  // 下面三个路径,也需要改为自己的路径
        "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt -I C:/work/opencv/opencv453_build/install/include -I C:/work/opencv/opencv453_build/install/include/opencv2 -L C:/work/opencv/opencv453_build/install/x64/mingw/lib -llibopencv_world453 && $dir$fileNameWithoutExt "
    },
    "files.associations": {
        "iostream": "cpp"
    }
}

launch.json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "opencv4.5.3 debuge",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            // 这里,需要改为自己的mingw路径
            "miDebuggerPath": "D:/mingw64/bin/gdb.exe",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": false
                }
            ],
            "preLaunchTask": "opencv4.5.3 compile task"
        }
    ]
}

tasks.json:

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "shell",
            "label": "opencv4.5.3 compile task",
            // 这里需要改为自己的mingw路径
            "command": "D:/mingw64/bin/g++.exe",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${workspaceFolder}\\${fileBasenameNoExtension}.exe",
                // 下面三个路径改为自己对应的opencv编译路径
                "C:/work/opencv/opencv453_build/install/x64/mingw/bin/libopencv_world453.dll",
                "-I",
                "C:/work/opencv/opencv453_build/install/include",
                "-I",
                "C:/work/opencv/opencv453_build/install/include/opencv2"
            ],
            "options": {
                // 这里改为自己的mingw路径
                "cwd": "D:/mingw64/bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "presentation": { 
                "panel": "new" //默认为“shared“表示共享,改成new之后每个进程创建新的端口
            }
        }
    ]
}

c_cpp_properties.json:

{
    "configurations": [
        {
            "name": "win",
            "includePath": [
                "${workspaceFolder}/**",
                // 下面6个路径改为自己对应的路径
                "C:/work/opencv/opencv453_build/install/include",
                "C:/work/opencv/opencv453_build/install/include/opencv2",
                "D:/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include",
                "D:/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++",
                "D:/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/x86_64-w64-mingw32",
                "D:/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/x86_64-w64-mingw32/32"
                
            ],
            "defines": [],
            // 改为自己的mingw路径
            "compilerPath": "D:/mingw64/bin/gcc.exe",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "clang-x64"
        }
    ],
    "version": 4
}

这样,配置就完成了。接下来,写一个测试代码验证下

4.3 测试

在test.cpp里,写一段测试代码,读取一个图像并显示。

#include
#include
#include

int main()
{
    cv::Mat img = cv::imread("C:/work/x2/data/pick_data/0.jpg");
    
    cv::imshow("i", img);
    cv::waitKey(0);

    return 0;
}

在return 0;这一行打一个断点。按ctrl+F5,调试运行。
vscode 编译安装c++版opencv_第22张图片
成功。

你可能感兴趣的:(opencv,计算机视觉,人工智能,vscode,c++)