【OpenCV】window 下 VS Code 配置OpenCV

news2024/11/24 8:59:42

文章目录

    • 前言
    • 直接使用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.coloradmin.cn/o/2046018.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

详解 Python 中的面向对象编程(2)

引言 面向对象编程&#xff08;OOP&#xff09;是一种编程范式&#xff0c;它通过将属性和行为整合到对象中来构建程序。本教程将带你了解Python语言中面向对象编程的基本概念。 想象一下&#xff0c;对象就像是系统中的各个部件。可以把程序比作一条工厂流水线。在流水线的每一…

Spring Boot 的Web开发

Spring Boot 的Web开发 一、 静态资源映射规则 总结&#xff1a; 只要静态资源放在类路径下&#xff1a; called /static (or /public or /resources or /METAINF/resources 访问 &#xff1a; 当前项目根路径/ 静态资源名 二、 enjoy模板引擎 Enjoy模板引擎是一个轻量级的…

50ETF期权交易小技巧分享:期权的交易规律

今天带你了解50ETF期权交易小技巧分享&#xff1a;期权的交易规律。50ETF期权是一种以实物华夏上证50ETF基金为标的物的金融衍生品&#xff0c;它允许投资者在未来某个特定时间以特定价格买入或卖出一定数量的50ETF基金。 50ETF期权交易规律 1、短线思维&#xff0c;最长1周时…

Python数据分析:数据可视化(Matplotlib、Seaborn)

数据可视化是数据分析中不可或缺的一部分&#xff0c;通过将数据以图形的方式展示出来&#xff0c;可以更直观地理解数据的分布和趋势。在Python中&#xff0c;Matplotlib和Seaborn是两个非常流行和强大的数据可视化库。本文将详细介绍这两个库的使用方法&#xff0c;并附上一个…

SAP MIGO屏幕增强的具体实施步骤介绍(SE19:MB_MIGO_BADI) <转载>

原文链接&#xff1a;https://mp.weixin.qq.com/s/cDoKsc3nBPMa0GRTtQawHw 在SAP/ERP项目实施中经常会遇到MIGO屏幕增强的需求&#xff0c;就是要在MIGO标准屏幕的抬头或行项目中添加一个客制化页签&#xff0c;在增强页签下增加一些字段供用户录入一些额外信息&#xff0c;比…

C语言 | Leetcode C语言题解之第338题比特位计数

题目&#xff1a; 题解&#xff1a; int* countBits(int n, int* returnSize) {int* bits malloc(sizeof(int) * (n 1));*returnSize n 1;bits[0] 0;for (int i 1; i < n; i) {bits[i] bits[i & (i - 1)] 1;}return bits; }

公钥基础设施PKI

数字证书的生成方式&#xff1a; 第一步&#xff0c;密钥生成。有两种方法&#xff0c;一是主体可以用某个软件生成的公钥/私钥对&#xff0c;主体要使生成的私钥保密&#xff0c;然后把公钥和其他信息与身份证明发送给注册机构。二是注册机构也可以为主体生成密钥对&#xff…

前端工程师如何快速入门鸿蒙开发?

在当今科技飞速发展的时代&#xff0c;前端工程师们面临着不断拓展技能边界的挑战。随着鸿蒙操作系统的崛起&#xff0c;掌握鸿蒙开发成为了前端工程师们提升自身竞争力的重要途径。那么&#xff0c;前端工程师如何才能快速入门鸿蒙开发呢? 一、了解鸿蒙开发的基础知识 前端工…

mybatis xml 动态sql相关语法

<?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace"com.xiaKangan.mapper.EmpMapper&qu…

定期修改密码竟然导致好几任运维小哥离职

某云服务商为政企客户提供私有云服务&#xff0c;每朵云里交换机、服务器、防火墙等网络/安全设备可多达数百台&#xff0c;而该企业仅有二、三十名运维人员&#xff0c;每人要负责2-3朵云的运维管理工作。当前&#xff0c;设备管理存在一些重大安全隐患&#xff0c;主要体现在…

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

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

在线教育新突破:Codigger 视频会议的实战案例

在当今数字化时代&#xff0c;在线教育如同一颗璀璨的新星&#xff0c;迅速崛起并照亮了知识传播的新路径。然而&#xff0c;随着竞争的加剧&#xff0c;如何提升教学质量和增强互动性&#xff0c;成为了在线教育机构亟待解决的难题。这时候&#xff0c;视频会议的出现就如同一…

【python】Matplotlib+LaTeX绘图 字符加粗 || 代码合集

【start&#xff1a;240814】 文章目录 动机Matplotlib库调用报错 LaTeX 模式安装使用配置属性&#xff1a;text.latex.preamble属性简介amsmathtextcomp 非LaTeX 模式配置属性&#xff1a;mpl.rcParams[...] 字符加粗&#xff08;label&#xff09;非LaTeX模式&#xff08;关闭…

英飞凌高压侧智能电源开关:BSP762T中文资料书

描述&#xff1a; 集成垂直功率FET的高压侧电源开关&#xff0c;提供嵌入式保护和诊断功能。 特性 - 过载保护 - 电流限制 - 短路保护 - 带重启功能的热关断 - 过压保护&#xff08;包括负载转储&#xff09; - 电感负载快速消磁 - 电池反向保护&#xff0c;带外部电阻 - CMOS兼…

【手撕数据结构】Topk问题

目录 题目思路代码 题目 TOP-K问题&#xff1a;即求数据结合中前K个最⼤的元素或者最⼩的元素&#xff0c;⼀般情况下数据量都⽐较⼤。 ⽐如&#xff1a;专业前10名、世界500强、富豪榜、游戏中前100的活跃玩家等。 对于Top-K问题&#xff0c;能想到的最简单直接的⽅式就是排序…

智联云采 SRM2.0 runtimeLog/download 任意文件读取漏洞复现

0x01 产品简介 智联云采是一款针对企业供应链管理难题及智能化转型升级需求而设计的解决方案&#xff0c;针对企业供应链管理难题&#xff0c;及智能化转型升级需求&#xff0c;智联云采依托人工智能、物联网、大数据、云等技术&#xff0c;通过软硬件系统化方案&#xff0c;帮…

Python 中的 SHAP 简介

本文中有多篇计划文章&#xff0c;后期会补充相关链接。鉴于公众号内无法后期修改文章&#xff0c;请关注原文链接。 如何创建和解释 SHAP 图&#xff1a;瀑布图、力图、平均 SHAP 图、蜂群图和依赖图 可直接在橱窗里购买&#xff0c;或者到文末领取优惠后购买&#xff1a; SHA…

iOS替代商店AltStore PAL获得EPIC的资助 即日起取消1.5欧元的年度订阅费

知名游戏开发商 EPIC 日前宣布通过 EPIC MegaGrant 计划向 iOS 替代商店 AltStore PAL 进行捐赠&#xff0c;该商店是在欧盟市场经过苹果批准的合规的第三方应用商店。 按苹果规定第三方替代商店需要缴纳核心技术费并且没有豁免条款&#xff0c;因此该商店每被一名用户安装&am…

RIP学习笔记

1.RIP简介 Rip&#xff1a;routing information protocol&#xff0c;路由信息协议。属于动态路由协议的一种。 RIP是应用较早、使用较普遍的内部网关协议(InteriorGatewayProtocol,简称IGP)&#xff0c;适用于小型同类网络&#xff0c;是典型的距离向量(distance-vector)协议…

OKR 与 KPI 的区别

OKR出现后&#xff0c;大家经常会拿KPI与之一起比较&#xff0c;结果两级分化&#xff1a;爱KPI的一如既往KPI&#xff0c;把OKR说的一无是处。爱OKR的&#xff0c;搞起了“去KPI”化。Tita作为OKR应用软件的服务商&#xff0c;我们也必须对OKR和KPI有充分的理解。对此我认真做…