将 VSCode 打造成 OpenCV 的 IDE(C++,window10 1803)

2023-05-16

文章目录

    • 引言
    • 环境
    • 步骤
        • 1、Visual Studio Code 配置
        • 2、openCV 配置
        • 3、MinGw 配置
        • 4、 cmake 配置
        • 5、项目配置
        • 6、参考链接
    • 最后

引言

由于毕设的原因,需要实现 openCV 库中的两个底层函数,之前一直在用 python 下的 openCV 库,但是 openCV 的底层绝大部分都是用 C++ 写的,故只好重新开始学习 C++ 下的 openCV 库。

关于 IDE 的选择:

因为目前的需求只是搭建一个可以运行 C++ 下的 openCV 库的一个 IDE,所以像 VS 这种重型的工具不在考虑范围内,思前想后,觉得用 VSCode 最为合适。

在这里插入图片描述
个人感受:

我目前为止配过 java,python 等语言,还有各种 IDE 的插件、环境,发现这次是有史以来最难的一次,我大概花了3 天的时间,看过不下 30 篇博客,终于弄好了!!!

这篇博客会记录我搭建的必要过程,和解决问题的一些思路。

希望对大家会有所帮助~


环境

Visual Studio Code - 1.32

openCV - 3.4.5

MinGw - 5.3.0

cmake - 3.9.0 (提取码 85uw


步骤

1、Visual Studio Code 配置

安装 C/C++ 插件(C++ Intellisense 可选)
在这里插入图片描述


2、openCV 配置

opencv-3.4.5-vc14_vc15.exe 解压到 除C盘外的其他盘内(若是C盘,cmake 时很可能报错)

opencv\build\x64 路径下新建一个 文件夹(可自起,这里是 MinGW
在这里插入图片描述


3、MinGw 配置

在这里插入图片描述

  • (版本)Version 选择 5.3.0
  • (架构)Architecture 32位cpu 选择 i686,64位cpu 选择 x86_64
  • (线程模式)Threads 如果使用 posix api 选择 posix,如果使用 win32 api 选择win32
  • (异常处理机制) Exception 有三种,根据机器情况进行选择
    • SJLJ (setjmp/longjmp) 兼容性好,32位或64位架构都可以使用,但速度慢
    • DWARF (DW2, dwarf-2) 速度比SJLJ快,但只能用于32位架构,且有bug,尽量不用
    • SEH (zero overhead exception) 速度很快,但只能用于64位架构
      (编译版本)Build revision 选择最高的

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

配置环境变量 path

新增 C:\Program Files\mingw-w64\x86_64-5.3.0-posix-seh-rt_v4-rev0\mingw64\bin

检查是否配置成功
win键 + R 输入 cmd 打开 dos
在这里插入图片描述
若出现上诉画面,则配置成功


4、 cmake 配置

配置环境变量 path

新增 C:\Program Files (x86)\cmake-3.9.0-rc3-win64-x64\bin


运行 cmake-3.9.0-rc3-win64-x64\bin\cmake-gui.exe
在这里插入图片描述
如上图所示:

where is the source code: 选择
在这里插入图片描述

where to build the binaries: 选择
在这里插入图片描述
点击 configure 按钮,按照下图所示进行选择
在这里插入图片描述
选择 MinGW 中的 C 和 C++ 编译的exe程序

我的路径: C:\Program Files\mingw-w64\x86_64-5.3.0-posix-seh-rt_v4-rev0\mingw64\bin

C:gcc.exe
C++ : g++.exe
在这里插入图片描述

设置完毕点击 Finish,耐心等待进度条读完,直到输出窗口看到 Configuring done。再次点击 Configure 等待进度条读完。之后点击Generate 等待进度条读完,出现 Generating done

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

在dos框(windows power shell 也可以)里,利用 cd 命令 切换到 D:\opencv\build\x64\MinGW,输入 minGW32-make 命令,这个时候大概花费 40 分钟左右的时间来编译,编译完成之后,输入 minGW32-make install 来完成装载。
  
最后,配置环境变量 path

新增 D:\opencv\build\x64\MinGW\bin


注意:
1、使用 cmake 时要求安装 python3(版本没有限制,比2高就行),并且python 必须配好了环境变量。

2、输入 minGW32-make 命令后,编译过程可能会失败,我之前有一次卡在了6%,有一次卡在了25%,如果发生这种错误,建议将你的所有软件的版本和我保持一致再重复以上过程,因为若是编译卡住,很可能是各个软件的版本不兼容导致,报的错误,百度下来的资料很少,很难解决。

3、如果每一步都是和以上步骤保持一致,还会出错,建议重启电脑(可能是某些环境变量没有立即生效)

4、三个环境变量总结如下图:
在这里插入图片描述

5、项目配置

新建一个专门写 c/c++ 的目录
在这里插入图片描述
在vsCode中打开该目录
在这里插入图片描述
新建 testOpenCv.cpp,copy如下代码

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

运行下,应该会报错并提示你生成 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": "C:/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}/**",
                "D:\\opencv\\build\\include",
                "D:\\opencv\\build\\include\\opencv2",
                "D:\\opencv\\build\\include\\opencv"                
            ],
            "defines": [],
            "compilerPath": "C:/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", "D:\\opencv\\build\\include",
      "-I", "D:\\opencv\\build\\include\\opencv2",
      "-I", "D:\\opencv\\build\\include\\opencv",
      "-L", "D:\\opencv\\build\\x64\\MinGW\\lib",
      "-l", "opencv_core345",
      "-l", "opencv_imgproc345",
      "-l", "opencv_imgcodecs345",
      "-l", "opencv_video345",
      "-l", "opencv_ml345",
      "-l", "opencv_highgui345",
      "-l", "opencv_objdetect345",
      "-l", "opencv_flann345",
      "-l", "opencv_imgcodecs345",
      "-l", "opencv_photo345",
      "-l", "opencv_videoio345"

  ],// 编译命令参数
  "problemMatcher":{
      "owner": "cpp",
      "fileLocation":[
          "relative",
          "${workspaceFolder}"
      ],
      "pattern":[
          {
              "regexp": "^([^\\\\s].*)\\\\((\\\\d+,\\\\d+)\\\\):\\\\s*(.*)$",
              "file": 1,
              "location": 2,
              "message": 3
          }
      ]
  },
  "group": {
      "kind": "build",
      "isDefault": true
  }
}

如此,就可以按 F5 运行 testOpenCv.cpp,展示一张你选择的图片。


6、参考链接

cmake+opencv+mingw部分error解决

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

vscode 配置OpenCVC编译环境

windows下cmake的安装教程

OpenCV在Windows环境下MinGW-W64编译方法

visual studio code(vscode) c++ 编译opencv并运行调试

最后

说实话,在完成这个配置的过程中,看过了许多博客,论坛,帖子,十分感谢为这个问题贡献精力的程序员们,但是,我觉得通过博客,论坛,帖子的这些方式去学习某件事情,其实十分低效,一方面由于每篇博客的水平层次不齐,遇到一个和你情况完全一致的真的很难,所以需要自己结合实际情况去分析处理,不可一味的模仿照搬;另一方面,博客一般都是在写某个点,而且由于时效性等原因,可能已经过时,要想系统地去了解掌握一个东西,最好还是学习官方教程、网课、或者书籍。

以上。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 VSCode 打造成 OpenCV 的 IDE(C++,window10 1803) 的相关文章

  • BRISK 特征检测器检测零个关键点

    下面显示的 Brisk 探测器没有给我任何关键点 有人可以提出一个问题吗 我将尝试用一些代码解释我在下面所做的事情 include opencv2 features2d features2d hpp using namespace cv u
  • opencv水印周围的轮廓

    我想在图像中的水印周围画一个框 我已经提取了水印并找到了轮廓 但是 不会在水印周围绘制轮廓 轮廓是在我的整个图像上绘制的 请帮我提供正确的代码 轮廓坐标的输出为 array 0 0 0 634 450 634 450 0 dtype int
  • 如何加速 svm.predict?

    我正在编写一个滑动窗口来提取特征并将其输入到 CvSVM 的预测函数中 然而 我偶然发现 svm predict 函数相对较慢 基本上 窗口以固定的步幅长度在图像比例上滑动穿过图像 遍历图像加上提取每个图像特征的速度 窗口大约需要 1000
  • 使用python从gst管道抓取帧到opencv

    我在用着OpenCV http opencv org 和GStreamer0 10 我使用此管道通过自定义套接字通过 UDP 接收 MPEG ts 数据包sockfd由 python 提供并显示它xvimagesink 而且效果很好 以下命
  • Opencv 2.4.2 代码讲解-人脸识别

    我参考OpenCV提供的文档制作了一个人脸识别程序 可以识别多个人脸 并且工作正常 在文档中 他们制作了省略号来突出显示脸部 我不明白的是他们如何计算椭圆的中心 他们的计算如下 for int i 0 i lt faces size i P
  • 选择合适的IDE

    您会推荐使用以下哪种 IDE 语言来在 Windows 下开发涉及识别手势并与操作系统交互的项目 我将使用 OpenCV 库来执行图像处理任务 之后 我将使用 win32 API 或 NET 框架与操作系统交互 具体取决于您建议的工具 性能
  • 是否有一个“轻型版本”IntelliJ IDEA 可以在没有项目的情况下编辑文件?

    可以从命令行在单个文件上调用 IntelliJ IDEA 如此处所述 将 IntelliJ IDEA 作为 Diff 或合并命令行工具运行 https www jetbrains com help idea running intellij
  • PhpStorm IDE:Ubuntu 18 LTS 中光标卡在文本选择(突出显示)模式

    我正在使用 PhpStorm 来处理 Laravel 项目 但是 鼠标卡在文本突出显示模式下并且右键单击在 IDE 上不起作用 关闭IDE并重新启动并不能解决问题 我试图在网上寻找答案但没有成功 对于那些像我一样苦苦挣扎的人 我有一个解决方
  • Eclipse:C/C++ 插件下载链接?

    我下载了 Eclipse 3 5 1 的 Java EE 版本 我现在可以使用它通过适当的插件来编辑 C C 吗 我去了Help gt gt 安装新软件但我不知道使用哪个 URL 来获取 C C 插件 我在 Eclipse 网站上也找不到它
  • 针对不同处理器架构的 Gradle android 构建

    我想使用 Gradle 为 4 个不同的 Android CPU 处理器架构 armeabi armeabi v7a x86 mips 构建 4 个单独的 apk 我有为 4 个 CPU 架构构建的本机 OpenCV 库libs folde
  • C++ OpenCV 3.4 / FFMPEG 3.4.1 VideoWriter 和 MP4 输出文件格式

    我正在运行 Linux 内核 4 9 35 ti r44 的 ARM BeagleBone X 15 Debian 机器 在我的 C Qt 5 应用程序中 我想将 cv Mat 帧保存为 MP4 格式视频 我安装了 libx264 并从头开
  • 静态 OpenCV 库中未定义的引用

    我有一个使用 OpenCV 3 1 的 C 项目 并且使用共享库可以正常工作 但现在我想使用静态库 位于项目目录中的文件夹中 来编译它 因为我希望能够在未安装 OpenCV 的情况下导出它 如果需要还可以编辑和重新编译 这次我重新编译了 O
  • 尝试使使用 OpenCV 的 java 应用程序(可执行 Jar)可移植。出现不满意的链接错误

    我制作了一个应用程序 用于从网络摄像头抓取视频并使用 OpenCV 和 JavaCV 检测运动 我正在尝试使用 eclipse 导出为可执行 jar 该程序在 eclipse 中运行良好 就像我编写该程序的计算机上的 exe jar 一样
  • 在openCV内部调用Gstreamer

    我需要在 openCV 代码中调用 Gstremaer 本质上是打开摄像机 当我查看源代码时 modules highgui src cap gstreamer cpp似乎是我正在寻找的文件 我用 Gstreamer 标志编译了 OpenC
  • 为什么在 OpenCV 中访问该矩阵时出现内存错误?

    我只是想写入给定大小的矩阵 当我在 Valgrind 中运行该程序时 出现内存错误 如下所示 主要 cpp include
  • OpenCV SVM 给出奇怪的预测结果

    我对 OpenCV 和支持向量机都很陌生 我想使用 SVM 训练具有两个标签的数据集 然后预测给定集合的标签 我当前的集合包含大约 600 行 具有相等的类分布 1 为 300 行 1 为 300 行 包含 34 列 这是我当前用于设置 O
  • Sublime Text 缩进设置被文件覆盖

    我正在开发一个项目 其中制表符大小应该为 4 并且制表符不应该是空格 我更新了我的 Preferences sublime settings 文件以包括 detect indentation false tab size 4 transla
  • 使用“const cv::Mat &”、“cv::Mat &”、“cv::Mat”或“const cv::Mat”作为函数参数的区别?

    我已经彻底搜索过 但没有找到一个简单的答案 传递 opencv 矩阵 cv Mat 作为函数的参数 我们传递一个智能指针 我们对函数内部的输入矩阵所做的任何更改也会改变函数范围之外的矩阵 我读到 通过将矩阵作为 const 引用传递 它不会
  • OpenCV InRange 参数

    我在 Android 上使用 OpenCV 来实时查找特定颜色的圆圈 我的第一步是仅保留与我正在寻找的定义颜色相对应的像素 在本例中为红色或绿色 示例图像 https i stack imgur com CIozU jpg 为此 我正在使用
  • 在谷歌C​​olab中使用cv2.imshow()

    我正在尝试通过输入视频来对视频进行对象检测 cap cv2 VideoCapture video3 mp4 在处理部分之后 我想使用实时对象检测来显示视频 while True ret image np cap read Expand di

随机推荐