一文解决VSCode下C++版OpenCV配置运行(终极版)

一、前言

        其实应该是引用一文解决VS Code下C++版OpenCV配置运行,有点标题党了hhhhh。 博主由于课程要求,需要在c++环境下配置opencv,同时由于电脑磁盘空间严重不足,安装不了visual studio,只能使用vscode配置;因此花了将近一整天时间才把opencv配好,踩了不少坑。故把一些细节问题以博客的形式整理出来,如果以后自己又要装这东西,正好用来参考。

        博主主要配置流程是按照该博客进行的
一文解决VS Code安装、C++环境配置、OpenCV配置_opencv安装教程visual code-CSDN博客

        这篇文章的博主写的非常用心,但是在很多小细节方面没有提到,导致多次安装都没有成功 

        故现在我把在该链接中没有提到的细节操作全部放到这篇博客中,顾大家参考。如有问题请在评论区指出。

二、操作前准备

        首先通读一遍该博客(因为本文只是做补充说明博客链接后面统称该博客为参考博客

        请注意,如果你想一次性装配成功,请从他的百度网盘至少下载MinGW,CMake,OpenCV,放在英文路径文件夹下。

        我之前用的是自己的MinGW,CMake来进行配置,但是由于版本问题或者其他奇怪的原因,一直无法成功编译opencv。所以我从头开始,用他提供的软件进行配置,最后才弄成功了。

三、MinGW安装

        这里按照博客配置,需要注意,在配置环境变量过程中要确保我们安装的MinGW路径如D:\mingw64\bin  最好要上移到Path的顶部

        相信很多人在之前的项目中配置了很多MinGW,比如Cubemx,其他C语言项目中。建议将我们刚刚配置的MinGW路径放到最顶端,可以避免潜在的冲突问题(比如我之前遇到过编译时发生莫名其妙的段错误)。

四、OpenCV安装

        这部分还是根据参考博客来配置,直到执行到需要手动下载文件的时候(如下图),这里就需要注意了

        博客中说需要在CMakeDownloadLog.txt中检查哪些文件丢失。但是实际情况是你在科学上网的前提下,只会丢失这三个文件

        两个dll文件你直接按照链接下载好,然后依据.cache/ffmpeg/路径下这两个dll文件的名字对其进行重命名(这个很重要),然后将其复制到上图所示的文件夹下(我路径下有两个opencv,实际上是因为我在opencv文件夹下解压缩opencv.exe导致的,具体路径要看你opencv放在那里的)

      对于Cmake文件,他很特别你点开链接之后会发现是这样的


        参考博客中没有讲,实际上这些文字就是cmake文件中的内容

        具体将其下载下来放到cache文件的方法,请参考这篇简短的博客,非常良心hhhcmake编译Opencv出现ffmpeg_cmake手动下载后也无法使用问题_opencv 编译 ffmpeg 无法打开-CSDN博客

        这样你应该是能够成功的编译opencv了。但是请注意,参考博客中的opencv环境变量路径可能存在问题,请按照我的方法来检查一下。

上图是参考博客中喊你配置的环境变量,你可以打开该文件夹看看这路径里面到底有什么

        你会发现这个路径下有很多可执行文件以及两个dll文件

        现在请你找一找这个路径  opencv\build\x64\MinGW\install\x64\mingw\bin 

        你会发现这里也有一个bin文件路径,dll文件也是一样的。现在请把这个文件路径放到环境变量path中,并且上移确保在前面

        因为opencv的库文件(h文件)实际上是存储在\opencv\build\x64\MinGW\install\include这个目录下面的(这是我配置出来的情况,不同人可能位置不一样)。这就导致参考博客的环境变量路径和opencv的库文件不是处于同一位置(正确情况是他们两个都在install文件夹下面,可以去检查\opencv\build\x64\MinGW\include路径,你会发现这里面根本没有h文件

        这样配置好之后,才能够正确访问到opencv的库文件(我的h文件在D:\opencv\opencv\build\x64\MinGW\install\include\opencv2当中)

六、VSCode配置

        首先你得根据参考博客配置VSCode运行一个简单的c++程序,相信这对大多数人是早就做过的事情了

        之后对于VSCode配置,主要是修改c_cpp_properties.json  launch.json  tasks.json 这三个文件,这一部分可以直接按照我的来,不需要再看参考博客了,主要就是这三个配置文件的事情
        在此之前我们要知道opencv的h文件路径,主要用到这两个(一定要打开这个路径看一看里面到底有没有h文件,如下图所示)

        \opencv\build\x64\MinGW\install\include\opencv2

        \opencv\build\x64\MinGW\install\include

        同时我们要知道我们安装的opencv的版本号是多少

        打开\opencv\build\x64\MinGW\install\x64\mingw\lib路径下OpenCVConfig-version.cmake文件

        记下版本号,我这里是4.5.5

现在请修改 launch.json  c_cpp_properties.json   tasks.json

需要改的东西有点点多,要耐心一点慢慢改哦,需要改的地方我已经给出了注释

launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "OpenCV Debug",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "D:/opencvproject/mingw64/bin/gdb.exe",//根据自己的c++的mingw目录修改
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": false
                }
            ],
            "preLaunchTask": "opencv4.5.5"//根据上文所示,去查你的版本号,这里要写对
        }
    ]
}

c_cpp_properties.json

{
    "configurations": [
        {
            "name": "win",
            "includePath": [
                "${workspaceFolder}/**",
                "D:/opencv/opencv/build/x64/MinGW/install/include",//根据自己的opencv目录修改
                "D:/opencv/opencv/build/x64/MinGW/install/include/opencv2"//根据自己的opencv目录修改,确保目录下面有h文件
            ],
            "defines": [],
            "compilerPath": "D:\\opencvproject\\mingw64\\bin\\g++.exe",//根据自己c++的mingw目录修改
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "${default}"
        }
    ],
    "version": 4
}

tasks.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "shell",
            "label": "opencv4.5.5",//这里opencv版本号查询好之后要写对
            "command": "D:/opencvproject/mingw64/bin/g++.exe",//根据自己c++的mingw目录修改
            "args": [
                "-g",
                "${file}",
                "-o",
                "${workspaceFolder}\\${fileBasenameNoExtension}.exe",
                "-I",
                "D:/opencv/opencv/build/x64/MinGW/install/include",  // //根据自己的opencv目录修改
                "-L",
                "D:/opencv/opencv/build/x64/MinGW/install/x64/mingw/bin",  //根据自己的opencv目录修改 
                // 这个就是之前添加的环境变量,确保其和h文件在一个目录下面(我的是install文件)
                "-lopencv_world455"  // //根据自己的版本修改,比如如果你的版本是4.5.3这里就写-lopencv_world453
                //具体填写啥可以查看上面所写的bin文件路径
            ],
            "options": {
                "cwd": "D:/opencvproject/mingw64/bin"//根据自己的c++ mingw目录修改
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Using OpenCV 4.5.5"//版本号要写对
        },
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe 生成活动文件",
            "command": "D:/opencvproject/mingw64/bin/g++.exe",//根据自己的mingw目录修改
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": false
            },
            "detail": "调试器生成的任务。"
        }
    ]
}

最后对示例代码进行测试。以下是我的示例代码

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main(void)
{
    cout<<"halo"<<endl;
    cv::Mat img = cv::imread("1.jpg");
    cv::imshow("img", img);    
    cv::waitKey(0);
    return 0;
}

点击小三角运行C++,顶部调试配置选择第二个  OpenCV Debug

运行成功

以上就是对参考博客的补充,如果还有什么问题或者好的解决方法,请在评论区留言😘

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值