【OpenCV】window 下 VS Code 配置OpenCV

文章目录

    • 前言
    • 直接使用OpenCV 编译好的库
    • 自己编译OpenCV
      • VS Code 安装
      • MinGW下载
      • 下载Cmake
      • 编译OpenCV
    • VS Code 运行cv程序
      • VSCode配置
      • 运行CV程序
    • 参考文章

前言

在网上找了些资料,大致得出VS Code开发OpenCV的环境配置流程,如下

  1. 安装VS Code
  2. 安装MinGW
  3. 安装CMake
  4. 下载OpenCV
  5. 配置OpenCV
  6. 配置VS Code

曾经在公司用过OpenCV,貌似并没有编译这一步,不明所以

以下是GPT的回答:

使用 CMake 来编译和配置 OpenCV 有几个重要原因:

  1. 跨平台支持:CMake 是一个跨平台的构建系统,可以生成适用于不同操作系统(如 Windows、Linux 和 macOS)的项目文件。这使得 OpenCV 可以在各种平台上编译和使用¹⁴。
  2. 自动化配置:CMake 可以自动检测系统上的编译器和库,并生成相应的构建文件。这减少了手动配置的复杂性和错误的可能性²³。
  3. 模块化构建:通过 CMake,开发者可以选择性地编译 OpenCV 的特定模块或功能,而不需要编译整个库。这对于定制和优化项目非常有用¹⁴。
  4. 与其他工具的兼容性:CMake 可以生成适用于多种 IDE(如 Visual Studio、Xcode)的项目文件,使得开发者可以在自己熟悉的环境中进行开发和调试²³。
    总的来说,CMake 提供了一种灵活、高效的方式来配置和编译 OpenCV,使得开发过程更加顺畅和高效。如果你不需要查看或修改 OpenCV 的源码,可以使用预编译的库文件,这样就不需要安装 CMake⁵。

这很明显是答非所问呀!
接下来看下官网的回答

To use the OpenCV library you have two options: Installation by Using the Pre-built Libraries or Installation by Making Your Own Libraries from the Source Files . While the first one is easier to complete, it only works if you are coding with the latest Microsoft Visual Studio IDE and do not take advantage of the most advanced technologies we integrate into our library1
要使用 OpenCV 库,您有两种选择: 使用预先构建的库进行安装,或者从源文件中创建自己的库进行安装。虽然第一个更容易完成,但它只有在您使用最新的 Microsoft Visual Studio IDE 编写代码并且没有利用我们集成到库中的最先进技术时才能工作

然后看下其他码农的回答

网下载好的opencv库和用Mingw64编译的不一样。官网下载opencv需要找到和VS版本相符合的库。vs是无法调用官网opencv的。用Mingw64编译好后,只需要lib文件夹和include文件夹就好。2

通过上面我们大致可以得出,使用OpenCV库的使用方式

  1. 使用官网编译好的.lib.dll,对IDE有一定限制,并且只能以动态库的方式调用
  2. 下载源码,自己编译

那么接下来分别讲下以上两种方式

直接使用OpenCV 编译好的库

  1. 在OpenCV官网下载在这里插入图片描述
  2. 下载完成后会有一个.exe,直接安装就好,安装后dll在如下路径在这里插入图片描述
  3. 直接在VS studio引入include和dll即可

自己编译OpenCV

需要的工具有VS Code、OpenCV源码、MinGW(编译g++)、Cmake(编译)

VS Code 安装

  1. VS Code下载
  2. 下载完成,直接安装即可VS Code\bin
  3. 安装成功的标识是,环境变量添加了在这里插入图片描述
    VS Code 本质上是一个文本编辑器,是众多插件赋予了其丰富的功能

MinGW下载

  1. 官网下载最新即可,mingw 下载在这里插入图片描述
    下载后缀为seh的包,posixUNIX系统下的包
  2. 解压放在任意目录下即可
  3. bin目录添加到环境变量中在这里插入图片描述
  4. 打开cmd,输入g++ --version,显示g++版本号说明安装成功在这里插入图片描述

下载Cmake

下载版本version >=3.9.1即可
1中有提到,You must download cmake (version >=3.9.1) and install it. You must add cmake to PATH variable during installation

  1. Cmake 下载,记得要下载二进制文件,我自己下载当时最新的版本在这里插入图片描述

  2. 解压缩后,将其中bin目录路径添加到环境变量中在这里插入图片描述

  3. CMD输入cmake --version,显示版本号则处理正确在这里插入图片描述

编译OpenCV

  1. 找到cmake/bin/cmake-gui.exe,打开
  2. 选择编译源文件和目标文件在这里插入图片描述
  3. 执行configure,选择如下,自己生成中未截图,拷贝了几份网其他博客的图在这里插入图片描述
  4. 选择C和C++的编译器目录在这里插入图片描述
  5. 执行过程中消息框会出现一堆红色信息,最后显示Configure done,是正常的。显示Configure done后,勾选BUILD_ opencv_worldWITH_ OPENGLBUILD EXAMPLES,不勾选WITH_IPPWITH_MSMFENABLE_PRECOMPILED_HEADERS (如果有的话),CPU_ DISPATCH选空( MinGW 不能编译这些内容,禁止编译即可)。再次点击Generate
  6. 生成如下,则表示成功在这里插入图片描述
    PS:如果中间有错误,可自行百度,题主未发生错误可能是挂了梯子
  7. CMD到MakeFiles所在文件夹,执行minGW32-make命令,或者使用多线程minGW32-make -j 4命令,这个过程比较漫长,甚至会发生错误,发生错误可参考这篇文章3,或者自己读一下错误,或者百度,或者找我亦可。执行成功如下在这里插入图片描述
  8. 执行mingw32-make install,编译完成后记得输入minGW32-make install完成装载,这样才会生成Install文件夹。记住install文件夹,非常重要
    至此,OpenCV编译已经完成

VS Code 运行cv程序

一共配置三个文件,这三个文件作用可以查看前面的博客

VSCode配置

launch.json

{"name": "OpenCV Debug","type": "cppdbg","request": "launch","program": "${fileDirname}/${fileBasenameNoExtension}.exe","args": [],"stopAtEntry": false,"cwd": "${fileDirname}","environment": [],//是否调用外部cmd"externalConsole": true,"MIMode": "gdb","miDebuggerPath": "C:\\msys64\\mingw64\\bin\\gdb.exe","setupCommands": [{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "OpenCV 4.4.0 compile task"
}

c_cpp_properties.json
可以输入shift+ctrl+p打开

{"configurations": [{"name": "Win32","includePath": ["${workspaceFolder}/**",// 需要填写头文件路径,记住此处时/install/include"D:/OpenCV/opencv-4.4.0/x64/install/include","D:/OpenCV/opencv-4.4.0/x64/install/include/opencv2"],"defines": ["_DEBUG","UNICODE","_UNICODE"],"compilerPath": "C:/msys64/mingw64/bin/g++.exe","cStandard": "c11","cppStandard": "c++17","intelliSenseMode": "windows-gcc-x64"}],"version": 4
}

tasks.json
其中args的内容需要修改

{"label": "OpenCV 4.4.0 compile task","type": "shell","command": "g++","args": ["-fdiagnostics-color=always","-g","${file}","-o","${fileDirname}/${fileBasenameNoExtension}.exe","-I","D:/OpenCV/opencv-4.4.0/x64/install/include","-I","D:/OpenCV/opencv-4.4.0/x64/install/include/opencv2","-L","D:/OpenCV/opencv-4.4.0/x64/bin","-l","libopencv_world440"],"group": {"kind": "build","isDefault": true},"problemMatcher": ["$gcc"]}

运行CV程序

#include <iostream>
#include <opencv2/opencv.hpp>int main()
{std::string path = "C:/_20240530235524.jpg";cv::Mat img = cv::imread(path);cv::imshow("img", img);cv::waitKey(0);return 0;
}

这里需要特别注意,因我的环境配置了g++,因此直接选择右上角的调试会默认使用第一条task,那么可能并不是cv调试,这时可以使用shift+ctrl+b,选择OpenCV task即可编译,然后F5运行

参考文章

  1. win10下VSCode配置opencv4.4.0(超详细教程,亲测有效)
  2. 一文解决VS Code安装、C++环境配置、OpenCV配置
  3. OpenCV使用CMake和MinGW-w64的编译安装
  4. VScode搭建Opencv(C++开发环境)

  1. OpenCV Installation in Windows ↩︎ ↩︎

  2. win10下VSCode配置opencv4.4.0(超详细教程,亲测有效)评论 ↩︎

  3. OpenCV使用CMake和MinGW-w64的编译安装 ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/402020.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【三维重建】Pixel-GS:三维高斯泼溅的像素感知的梯度密度控制(去除浮点,提升精度)

项目&#xff1a;https://pixelgs.github.io/ 标题&#xff1a;Pixel-GS: Density Control with Pixel-aware Gradient for 3D Gaussian Splatting 来源&#xff1a;香港大学&#xff1b;腾讯AI Lab 文章目录 摘要一、前言二、相关工作1.新视图合成2.基于点的辐射场3.Floater 的…

论文写作新神器!10款可以写论文的人工智能软件

在当今快速发展的数字时代&#xff0c;人工智能&#xff08;AI&#xff09;技术已经渗透到各个领域&#xff0c;包括学术研究和论文写作。为了帮助学者和学生提高写作效率和质量&#xff0c;市场上涌现了许多优秀的AI写作工具。本文将详细介绍10款可以写论文的人工智能软件&…

图像文本擦除无痕迹!复旦提出EAFormer:最新场景文本分割新SOTA!(ECCV`24)

文章链接&#xff1a;https://arxiv.org/pdf/2407.17020 git链接&#xff1a;https://hyangyu.github.io/EAFormer/ 亮点直击 为了在文本边缘区域实现更好的分割性能&#xff0c;本文提出了边缘感知Transformer&#xff08;EAFormer&#xff09;&#xff0c;该方法明确预测文…

CPU飙升 怎么定位问题

传统的方法 【top】 查看所有进程占系统CPU的排序&#xff0c;定位是哪个进程搞的鬼。PID那一列就是进程号。 【top -Hp pid】 定位进程中使用 CPU 最高的线程tid 【printf ‘0x%x’ tid】 线程 tid 转化 16 进制,例如printf ‘0x%x’ 11882 得到16进制的 0x2e6a 【jstack…

PX4-Autopolite linux环境下源码编译中遇到的一些问题及相应解决办法

最近在做一个PX4飞控移植的项目&#xff0c;第一次接触到PX4源码&#xff0c;真的是感觉编译起来非常的麻烦&#xff0c;下面我将介绍几个新手比较容易踩坑的点。 &#xff08;我都踩了ㄒ-ㄒ&#xff09; 1.PX4源码要用git clone 从github上克隆来&#xff0c;千万不要直接在g…

java SE--集合

1.Collection接口 Collection接口是List&#xff0c;Set&#xff0c;Queue接口的父接口&#xff0c;里面提供了子类的常用方法&#xff1b; List储存的是可以重复的&#xff0c;有序的数据&#xff0c;子类是arrayList&#xff08;数组结构&#xff09;和linkedList&#xff…

Mapreduce_Distinct数据去重

MapReduce中数据去重 输入如下的数据&#xff0c;统计其中的地址信息&#xff0c;并对输出的地址信息进行去重 实现方法&#xff1a;Map阶段输出的信息K2为想要去重的内容&#xff0c;利用Reduce阶段的聚合特点&#xff0c;对K2进行聚合&#xff0c;去重。在两阶段中&#xff…

24/8/15算法笔记 强化学习贪婪算法,UCB,汤普森算法

以老虎机为例介绍各算法 import numpy as np#每个老虎机的中奖概率&#xff0c;0-1之间均匀分布 probs np.random.uniform(size10)#生成一个数组&#xff0c;其中的元素是从均匀分布&#xff08;也称为矩形分布&#xff09;中随机抽取的。均匀分布意味着每个数出现的概率是相…

微服务架构的未来发展趋势

文章目录 摘要引言当前发展趋势ServerlessService MeshAIOps 未来可能出现的挑战代码示例微服务架构示例 QA环节小结未来展望参考资料 摘要 微服务架构在软件开发中已经成为主流&#xff0c;但随着市场需求和技术环境的快速变化&#xff0c;微服务架构也在不断演进。本文将分析…

如何为 Nextcloud 配置自动数据库备份 - 应用程序

自动数据库备份模块简化了生成数据库计划备份的过程。这些备份可以存储在各种位置&#xff0c;包括本地驱动器、FTP 服务器、SFTP 服务器、Dropbox、Google Drive、OneDrive、NextCloud 和 Amazon S3 云存储。用户还可以选择启用自动删除过期备份的功能。此外&#xff0c;用户可…

MyBatis-Plus 进阶之条件构造器Wrapper和常用接口

目录 1.wrapper 介绍 1.1什么是 wrapper 2.QueryWrapper 2.1测试前的准备 2.2例1&#xff1a;组装查询条件 2.3例2&#xff1a;组装排序条件 2.4例3&#xff1a;组装删除条件 2.5例4&#xff1a;条件的优先级 2.6例5&#xff1a;组装 select 子句 2.7例6&#xff1a;…

[Linux][OS][信号的保存和处理]

目录 信号的处理 1. 在内核中的表示 2. 相关概念 3. 信号集操作函数 4.sigprocmask 5.sigpending 信号的捕捉 重谈地址空间 信号的处理 1. 在内核中的表示 普通信号&#xff0c;多次产生只会记录一次 信号范围 [1,31]&#xff0c;每一种信号都要有自己的一种处理方式…

【ElementUI】el-table值相同时合并行

效果图&#xff1a; 大致思路&#xff1a;el-table里添加合并行或列的计算方法span-method <el-table :data"tableList" :span-method"objectSpanMethod"> // 在获取到列表数据tableData后调用此方法 handleTableData(tableData) {let rowSpanArr …

Java JDVC编程

1、Java的数据库编程&#xff1a;JDBC JDBC&#xff08;Java Database Connectivity&#xff09;是Java中用来与数据库进行交互的一种标准API&#xff08;应用程序编程接口&#xff09;。它为开发人员提供了一种统一的方式来访问各种类型的数据库管理系统&#xff08;DBMS&…

【深度学习实践】基于深度学习的图像去雾算法-ChaIR-实践

本文介绍一个去雾算法ChaIR的使用方法&#xff0c;可以完成图像去雾&#xff0c;也可以用于图像去雨、去噪音等任务。本文不涉及论文原理&#xff0c;只包含源代码的跑通和使用。 先展示一下效果&#xff1a; 原图去雾 论文&#xff1a;Exploring the potential of channel …

如何以编程方式解析 XCResult 包的内容

文章目录 介绍查找 XCResult 包分享 XCResult 包 解析 XCResult 包自动解析 XCResult 包的内容 使用 XCResultKit 解析包的内容初始化库获取调用记录 获取测试信息导出屏幕录制 可运行 Demo初始化 Swift Package编写主文件代码解释运行 Demo 结论 介绍 XCResult 包是一个包含运…

ASP.NET在线交流论坛管理系统

ASP.NET在线交流论坛管理系统 说明文档 运行前附加数据库.mdf&#xff08;或sql生成数据库&#xff09; 主要技术&#xff1a; 基于asp.net架构和sql server数据库 用户功能有个人信息管理 帖了信息管理 意见反馈信息管理 点赞管理 收藏管理 后台管理员可以进行用户管理 …

数据结构-查找

一、基本术语 二、线性结构 ASL&#xff1a;平均查找长度 1、顺序查找 1.1、代码实现 typedef struct {int* elem;int TableLen; }SSTable;int Search_Seq(SSTable ST, int key) {ST.elem[0] key; //哨兵&#xff0c;使得循环不用判断数组是否会越界int i;for (i ST…

LoadRunner性能指标分析常用监控参数

性能分析&#xff0c;Windows自带一种 &#xff0c;LoadRunner自带一种&#xff0c;2种参数类似 Windows自带入口 运行中搜索&#xff1a;性能监视器 进到&#xff1a;性能-数据收集器-用户定义-右键-新建-数据收集器集 名称自己任意输入&#xff0c;选择手动创建 数据类型根…

Haproxy的配置详解与使用

一、haproxy简介 HAProxy是一个使用C语言编写的自由及开放源代码软件&#xff0c;其提供高可用性、负载均衡&#xff0c;以及基于TCP和HTTP的应用程序代理。 HAProxy特别适用于那些负载特大的web站点&#xff0c;这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬…