windows系统【VSCode搭建OpenCV、C++开发环境】

背景

在大学时是使用Visual Studio 2015、OpenCV、C++来开发的,那时看到OpenCV官方推荐windows 64位系统安装Visual Studio进行开发。现在出来工作实习后,接触比较多的是VSCode,这款软件能占用空间小,能支持主流的操作系统,安装库和配置文件也挺方便的,适合项目开发使用。

目录

前言

选择软件和版本

安装步骤

1、Visual Studio Code 安装、配置

2、openCV 配置

3、安装并配置MinGw 

4、安装、配置cmake

5、项目配置

参考链接


前言

VSCode刚安装完成时,只能起文本编辑器的作用,用来写写代码;想要变成能开发OpenCV的IDE,需要我们安装插件、依赖库并手动设置参数。本文中主要目的是实现在windows中,有一个支持C++、OpenCV的开发环境。

选择软件和版本

Visual Studio Code - 1.43.2
openCV - 3.4.9
MinGw - 5.3.0
cmake - 3.9.0 

建议大家和这里版本保持一致;免去后面安装失败的惨剧。MinGw较新的版本是需要自己编译的,不能直接运行安装。

大家可以到这里下载软件:https://download.csdn.net/download/qq_41204464/12298617

等下也在网盘放一份,只是这个网盘限速,诶,大家可以衡量选择。

安装步骤

1、Visual Studio Code 安装、配置

下载好VScode后,解压出来有一个可执行文件,执行安装后如下配置:安装 C/C++ 插件(C++ Intellisense 可选)

如果对安装VScode不熟悉的朋友,可以点击参考我这篇博客 

下图是配置好中文的VScode,准备安装C/C++ 插件

2、openCV 配置

执行opencv-3.4.9-vc14_vc15.exe 可执行程序,进行安装OpenCV;其实是把相关的文件解压出来,提供我们后面使用。

安装的时候选择好路径就行了,尽量不要放置C盘;比如放置E:\software_install\opencv_3_4

 opencv\build\x64 路径下新建一个文件夹(可自起,这里是 MinGW),用来存放等下编译的文件

3、安装并配置MinGw 

执行mingw-w64-install.exe,如下配置

  • (版本)Version 选择 5.3.0
  • (架构)Architecture 32位cpu 选择 i686,64位cpu 选择 x86_64
  • (线程模式)Threads 如果使用 posix api 选择 posix,如果使用 win32 api 选择win32

(异常处理机制) Exception 有三种,根据机器情况进行选择

  1. SJLJ (setjmp/longjmp) 兼容性好,32位或64位架构都可以使用,但速度慢
  2. DWARF (DW2, dwarf-2) 速度比SJLJ快,但只能用于32位架构,且有bug,尽量不用
  3. SEH (zero overhead exception) 速度很快,但只能用于64位架构;(编译版本)Build revision 选择最高的

如果是 win10下的64位系统 建议选择 与图像上一致的选项。

然后配置环境变量 系统的path 

注意,这里的MinGW的安装路径,根据自己实际安装路径来填写到环境变量。

检查是否配置成功

win键 + R 输入 cmd 打开 命令行窗口

能成功看到其版本了。

4、安装、配置cmake

解压好cmake,添加可环境变量

注意,这里的cmake的安装路径,根据自己实际解压后路径来填写到环境变量。

然后在命令窗口执行:cmake-gui.exe

where is the source code: 选择 E:\software_install\opencv_3_4\sources ,即OpenCV安装的路径下的sources目录

where to build the binaries: 选择

点击 configure 按钮,按照下图所示进行选择

选择 MinGW 中的 C 和 C++ 编译的exe程序

我这边的路径:D:\Program Files\mingw-w64\x86_64-5.3.0-posix-seh-rt_v4-rev0\mingw64\bin  ,需要根据自己的mingw安装路径进行选择:

C:x86_64-w64-mingw32-gcc.exe
C++ : x86_64-w64-mingw32-g++.exe

设置完毕点击 Finish,耐心等待进度条读完,直到输出窗口看到 Configuring done

再次点击 Configure 等待进度条读完。之后点击Generate 等待进度条读完,出现 Generating done

这时,可以看到 opencv\build\x64\MinGW 的文件夹下新增了好多东西。


修改OpenCV代码,来防止等下编译失败;注意适合于OpenCV3.4.9版本的;其他的版本不适合;

解决方案:

E:\software_install\opencv_3_4\sources\modules\photo\test\test_hdr.cpp  添加头文件

#include <sys/time.h>

在命令窗口,使用 cd 命令 切换到 E:\software_install\opencv_3_4\build\x64\MinGW,输入 minGW32-make 命令,这个时候大概花费 30 分钟左右的时间来编译,这个具体的时间和根据电脑的性能有关的。

编译完成之后,输入 minGW32-make install 来完成安装。

最后,配置环境变量 path :

新添:E:\software_install\opencv_3_4\build\x64\MinGW\bin

5、项目配置

新建一个文件夹,用来放先关工程代码的。如:C++_OpenCV_template

在vsCode中打开该目录

新建 testOpenCv.cpp,copy如下代码:

#include<opencv2/opencv.hpp>
#include<opencv2/highgui.hpp>
using namespace cv;
int main()
{
    Mat img=imread("sad.jpg");
    cv::imshow("image",img);
    cv::waitKey();
    return 0;
}

运行(Ctrl+F5),应该会报错并提示你生成 launch.json 文件,copy下面代码复制到 launch.json 中,将 "miDebuggerPath" 改成自己的。

{
    // 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}.o",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "D:/Program Files/mingw-w64/x86_64-5.3.0-posix-seh-rt_v4-rev0/mingw64/bin/gdb.exe",
            "preLaunchTask": "g++",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        },
    ]
}

.vscode 文件夹(launch.json 的父目录)下,新建 c_cpp_properties.json,copy 如下代码,修改includePath的后三个路径为自己的,compilerPath 同理。

{
    "configurations": [
        {
            "name": "win",
            "includePath": [
                "${workspaceFolder}/**",
                "E:\\software_install\\opencv_3_4\\build\\include",
                "E:\\software_install\\opencv_3_4\\build\\include\\opencv",
                "E:\\software_install\\opencv_3_4\\build\\include\\opencv2"                 
            ],
            "defines": [],
            "compilerPath": "D:/Program Files/mingw-w64/x86_64-5.3.0-posix-seh-rt_v4-rev0/mingw64/bin/gcc.exe",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "clang-x64"
        }
    ],
    "version": 4
}

.vscode 文件夹(launch.json 的父目录)下,新建 tasks.json,copy以下代码,修改 “-I” 和 “-L” 的路径。

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "command": "g++",
    "args": [
        "-g", 
        "-std=c++11", 
        "${file}", 
        "-o", 
        "${fileBasenameNoExtension}.o",  
        "-I", "E:\\software_install\\opencv_3_4\\build\\include",
        "-I", "E:\\software_install\\opencv_3_4\\build\\include\\opencv2",
        "-I", "E:\\software_install\\opencv_3_4\\build\\include\\opencv",
        "-L", "E:\\software_install\\opencv_3_4\\build\\x64\\MinGW\\lib",
        "-l", "opencv_core349",
        "-l", "opencv_imgproc349",
        "-l", "opencv_imgcodecs349",
        "-l", "opencv_video349",
        "-l", "opencv_ml349",
        "-l", "opencv_highgui349",
        "-l", "opencv_objdetect349",
        "-l", "opencv_flann349",
        "-l", "opencv_imgcodecs349",
        "-l", "opencv_photo349",
        "-l", "opencv_videoio349"
  
    ],// 编译命令参数
    "problemMatcher":{
        "owner": "cpp",
        "fileLocation":[
            "relative",
            "${workspaceFolder}"
        ],
        "pattern":[
            {
                "regexp": "^([^\\\\s].*)\\\\((\\\\d+,\\\\d+)\\\\):\\\\s*(.*)$",
                "file": 1,
                "location": 2,
                "message": 3
            }
        ]
    },
    "group": {
        "kind": "build",
        "isDefault": true
    }
  }
  

注意:如果是使用其他版本的OpenCV,把tasks.json中的349改为相应版本号;

比如使用:OpenCV3.4.6;就把349改为346。

如此,就可以按 Ctrl+F5 运行 testOpenCv.cpp,展示一张你选择的图片。刚才截了个拳王的图:

nice成功了,刚才等待编译,来了一盘拳王,一年多没玩了突然想起好怀念。

换一张图片:

以下代码能打开笔记本摄像头:

#include <opencv2\opencv.hpp>  
 
using namespace cv;
using namespace std;
 
int main()
{
    Mat frame;
    VideoCapture capture(0);//读取视摄像头实时画面数据,0默认是笔记本的摄像头;如果是外接摄像头,这里改为1
    
    while (true)
    {
        
        capture >> frame;            //读取当前帧
        if(!frame.empty()){          //判断输入的视频帧是否为空的
 
            imshow("window",frame);  //在window窗口显示frame摄像头数据画面
        }
 
        if(waitKey(20) == 'q')   //延时20ms,获取用户是否按键的情况,如果按下q,会推出程序 
		break;
    }
    
    capture.release();     //释放摄像头资源
    destroyAllWindows();   //释放全部窗口
    return 0;
}

参考链接

将 VSCode 打造成 OpenCV 的 IDE

cmake+opencv+mingw部分error解决

将Sublime Text 3打造成OpenCV3.2的IDE

vscode 配置OpenCVC编译环境

希望对你有帮助。

发布了177 篇原创文章 · 获赞 620 · 访问量 44万+

猜你喜欢

转载自blog.csdn.net/qq_41204464/article/details/105472091