VSCODE+OpenCV4.1.0 Windows下配置

前言

vscode因界面美观性,强大的兼容性,以及轻量化设计广受程序员青睐,今天老杨主要谈一下如何使用vscode配置opencv,从而开启计算机视觉学习之路。老杨在配置的过程中也参考了很多博主的博客,发现大部分是针对linux进行配置的,对于windows下的配置讲解十分少。在vscode的json文件配置时,因为执行文件格式以及各部分参数不清晰,导致经常会出现很多意想不到的问题。我会在这篇文章中对于需要注意的地方进行标注,如果大家在follow配置的过程中出现任何问题,欢迎留言讨论!

配置组件

在开始配置一个基于vscode的opencv工程时,我们要准备好以下几个组件,这样能够帮助我们更快,更清晰地完成这样一个工程的配置,对应链接已附,方便读者查找下载。这部分内容不做赘述,网上对应的讲解也有很多了,读者可以自行查找安装。这里只强调一点,在安装MinGW 64时候,我们需要按照我这里的选项进行安装,不然后面opencv编不过去,会fatal error后中止。组件记得添加环境变量。

推荐的安装顺序是,先安装vscode,然后从vscode的组件中安装c/c++以及配置MinGW,这里确保一般的C++程序能够正常运行即可。所有路径中不可包含中文字符!!

  1. vscode及c++组件:vscode download link.
  2. CMake GUI:CMake download link.
  3. MinGW 64:MinGW 64 for Windows.
  4. OpenCV 任意版本 OpenCV release page.

MinGW 64安装配置方案

这里强调一定要选择posix,不然opencv编不过去,也没法install

在这里插入图片描述

CMake GUI

把路径和文件选对,如果执行时中断,则存在问题。configure之前,可以勾选BUILD_opencv_world,WITH_OPENGL和BUILD_EXAMPLES,不勾选WITH_IPP、WITH_MSMF和ENABLE_PRECOMPILED_HEADERS。勾选world主要是为了方便后续添加库,也可以不勾选。然后是熟悉的configure,generate,两个done后就可以了。如果后续编译出现问题,就返回来重新勾选Name中的选项,再次configure,generate,生成新的makefile,重新编译。CUDA相关的,看个人需求,一般可以不加。

这里要注意一点,在CMake时候会有文件无法下载,比如ffmpeg。因为数据源在外部,下载时候会产生无法连接服务器的超时error。这个时候可以仔细阅读CMakeDownloadLog.txt这个文件,所有下载失败的内容都会被记录在这里。里面有你对应的下载网址,以及你需要把他们放在自己电脑的哪个文件夹的指示,一定要耐心仔细阅读并下载,放置。在opencv的.cache文件夹里有三个下载失败的文件 0KB,但是他们的文件名是对的。如果你看不懂log的txt,你可以使用log给的对应链接下载完整文件,并直接使用下载失败的文件名进行重命名替换,仍放置在.cache文件夹目录下。注意每个版本的md5名字不同,都已经在CMakeDownloadLog.txt这个文件中,千万不可直接从网上复制粘贴进行重命名。

.cache 文件夹下应该有的文件
在这里插入图片描述
编完opencv通过后,打开windows的terminal,cd到makefile的文件夹下,使用minGW32-make进行编译,或者minGW32-make -j 4,采用多线程编译。4只是个例子,视自己电脑cpu配置情况而定。编译后minGW32-make install 即可。到此opencv已经装好了,剩下只是配置vscode,将opencv编好的库和头文件添加,就可以操作起来了。

vscode文件配置

vscode的配置主要就是这三个文件,在.vscode文件夹下,建立三个json文件对工程进行配置,分别是launch, c_cpp_properties, 和tasks。在这里我粘贴了我本机上测试运行正常的json文件,仅供大家参考。每个文件在不同的计算机上需要进行一些修改,我会对需要修改的内容进行说明。

launch.json

launch文件必须修改的只有一个参数:

  1. miDebuggerPath 修改成你自己电脑MinGW的对应路径,能找到你的gdb.exe就行。
{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/gdb.exe",
            "preLaunchTask": "g++",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        },
    ]
}

c_cpp_properties.json

这个文件修改的内容有两个

  1. includePath:修改成你电脑上的opencv对应文件夹路径。注意有些文件夹下没有opencv这个文件,只有opencv2,那就只添加这个,不要盲目复制粘贴。
  2. compilerPath:找到你的MinGW下的gcc.exe文件并复制绝对路径。
    其他内容无需更改。
{
    "configurations": [
        {
            "name": "win",
            "includePath": [
                "${workspaceFolder}/**",
                "E:/opencv/build/include",
                "E:/opencv/build/include/opencv2"
            ],
            "defines": [],
            "compilerPath": "C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/gcc.exe",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "clang-x64"
        }
    ],
    "version": 4
}

tasks.json

这部分修改内容较多,也是最后一部分需要修改的内容,请务必耐心看完:

  1. command:修改为你自己电脑上的g++路径
  2. args 修改路径,改为你自己电脑的opencv文件目录
  3. 注意库文件名后的“410”是我安装的版本为4.1.0,需要修改为你自己安装的版本

其他内容无需修改
在这里插入图片描述

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
           {
            "label": "g++",
            "type": "shell",
            "command": "C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/g++",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${workspaceFolder}\\${fileBasenameNoExtension}.exe",
                "-I", "E:\\opencv\\build\\include",
                "-I", "E:\\opencv\\build\\include\\opencv2",
                "-L", "E:\\opencv\\build\\x64\\MinGW\\lib",
                "-l", "opencv_core410",
                "-l", "opencv_imgproc410",
                "-l", "opencv_imgcodecs410",
                "-l", "opencv_video410",
                "-l", "opencv_ml410",
                "-l", "opencv_highgui410",
                "-l", "opencv_objdetect410",
                "-l", "opencv_flann410",
                "-l", "opencv_imgcodecs410",
                "-l", "opencv_photo410",
                "-l", "opencv_videoio410"
            ],
            "problemMatcher": {    
                "owner": "cpp",      
                "fileLocation": [      
                    "relative",      
                    "${workspaceRoot}"      
                ],      
                "pattern": {      
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",      
                    "file": 1,      
                    "line": 2,      
                    "column": 3,      
                    "severity": 4,      
                    "message": 5      
                }      
            } 
        }
    ]
}



结束语

到此,所有关于vscode和opencv的配置就结束了。可以编写一个简单的程序进行测试:

#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;

int main() {
	VideoCapture cap(0);
	while (1){
		Mat cam;
		cap >> cam;
		imshow("camera",cam);
		waitKey(30);//延时30秒
	}
	return 0;
}

如果摄像头正常打开,并开始显示拍摄内容,那么opencv就算基本安装成功了!大家也可以调用一些opencv自带的sample去进行测试,需要注意的是,这里仅仅编译了opencv的核心库,并没有联合opencv contrib的库一起进行编译。有需要的读者可以自行进行查阅资料尝试,老杨后续也可能更新关于联合opencv 及opencv contrib进行编译和配置的博文。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值