Windows 上下载、编译 OpenCV 并配置系统环境变量的详细步骤

news2024/12/24 22:13:14

opencv

创作不易,您的打赏、关注、点赞、收藏和转发是我坚持下去的动力!

在 Windows 上下载并编译 OpenCV,然后配置系统环境变量的步骤如下:

1. 下载 OpenCV

  1. 打开 OpenCV 官方下载页面。
  2. 找到最新的 Windows 版本,点击下载,例如:opencv-4.x.x-vc14_vc15.exe,这将是一个自解压文件。
  3. 下载完成后,双击 opencv-4.x.x-vc14_vc15.exe 文件,选择一个目录将其解压,例如:C:\,解压后,你会得到一个文件夹,如:C:\opencv\

2. 安装 CMake

  1. 下载并安装 CMake(选择 Windows 64-bit 版本)。
  2. 安装完成后,将 CMake 添加到系统环境变量中(安装时可以选择自动添加)。

3. 配置 OpenCV 源码

  1. 进入解压后的 opencv 文件夹,你会看到一个 sources 文件夹,其中包含 OpenCV 源码。
  2. 为了编译 OpenCV,需要创建一个用于构建的目录,例如:C:\opencv\build

4. 使用 CMake 配置 OpenCV

  1. 打开 CMake GUI。
  2. Where is the source code: 中选择 OpenCV 的 sources 文件夹路径,如:C:\opencv\sources
  3. Where to build the binaries: 中选择刚才创建的 build 文件夹路径,如:C:\opencv\build
  4. 点击 “Configure” 按钮,弹出的窗口中选择你的编译器(例如,Visual Studio 16 2019)并选择构建平台(默认是 x64),然后点击“Finish”。
  5. CMake 开始检查环境并配置 OpenCV 编译设置。这个过程可能需要几分钟,完成后,CMake GUI 下方会显示一系列的配置选项。
  6. 在配置选项中,你可以选择你需要的模块,例如可以勾选 WITH_IPPWITH_CUDAWITH_OPENGL 等。如果不确定,可以保持默认设置。
  7. 再次点击 “Configure” 进行更新配置。
  8. 配置完成后,点击 “Generate” 生成 Visual Studio 项目文件。
  9. 生成完成后,点击 “Open Project” 打开生成的 Visual Studio 项目文件(.sln)。

5. 使用 Visual Studio 编译 OpenCV

  1. 在 Visual Studio 中打开 OpenCV.sln 项目文件。
  2. 选择 Release 模式,右键单击解决方案,选择 “生成解决方案”。这将会开始编译 OpenCV。编译时间较长,具体取决于你的电脑配置。
  3. 编译完成后,生成的库文件(.lib.dll)将位于 C:\opencv\build\install\x64\vc16\libC:\opencv\build\install\x64\vc16\bin 目录下。

6. 设置 OpenCV 系统环境变量

为了方便在其他项目中使用 OpenCV,需要将 OpenCV 的库路径添加到系统环境变量中。

  1. 打开 控制面板 > 系统和安全 > 系统 > 高级系统设置

  2. 在“高级”选项卡中,点击 “环境变量”。

  3. 在“系统变量”中找到 Path 变量,双击编辑。

  4. 点击 “新建”,添加以下路径:

    • OpenCV 的 bin 目录路径,例如:C:\opencv\build\install\x64\vc16\bin
  5. 你还可以创建一个新的系统变量,以便在 Visual Studio 项目中引用:

    • 点击 “新建”,名称为 OpenCV_DIR,值为 OpenCV 编译后的安装目录,例如:C:\opencv\build\install

7. 验证 OpenCV 安装

  1. 打开命令提示符,输入以下命令以验证环境变量是否正确设置:
    echo %OpenCV_DIR%
    
    如果显示的是你设置的 OpenCV 路径,说明环境变量配置成功。
  2. 编写一个简单的 OpenCV 程序进行测试,例如一个显示图像的程序。使用 Visual Studio 创建一个新的 C++ 项目,编写如下代码:
    #include <opencv2/opencv.hpp>
    
    int main() {
        cv::Mat image = cv::imread("path_to_your_image.jpg");
        if (image.empty()) {
            std::cout << "Could not open or find the image!" << std::endl;
            return -1;
        }
        cv::imshow("Display window", image);
        cv::waitKey(0);
        return 0;
    }
    
  3. 配置 Visual Studio 项目属性:
    • 在项目属性中,添加 OpenCV 头文件和库路径:
      • C/C++ -> 常规 -> 附加包含目录:添加 C:\opencv\build\install\include
      • 链接器 -> 常规 -> 附加库目录:添加 C:\opencv\build\install\x64\vc16\lib
    • 链接器 -> 输入 -> 附加依赖项 中,添加 OpenCV 库文件,例如:
      opencv_world460.lib  // 根据你安装的 OpenCV 版本号
      

8. 运行 OpenCV 测试程序

  1. 运行编译后的程序,如果看到弹出窗口显示图像,则说明 OpenCV 已经成功安装并配置完成。

完成这些步骤后,你就可以在 Windows 系统上使用 Visual Studio 编译和运行 OpenCV 项目了。

大家有技术交流指导、论文及技术文档写作指导、项目开发合作的需求可以搜索关注我私信我

在这里插入图片描述

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

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

相关文章

初中生物--4.生物体的结构层次(二)

一、植物体的结构层次 1.绿色开花植物的六大器官 根、茎、叶、花、种子、果实 2.植物的组织 3.植物体的生长 植物体的生长是细胞分裂、生长和分化的综合结果。在植物体的生长过程中&#xff0c;细胞不断分裂产生新的细胞&#xff0c;新细胞不断生长使细胞体积增大&#xff…

数据结构 - 队列

一.队列的定义 1.队列的分类 队列根据存储结构可以分为 顺序队列 和 链式队列 2.队列的结构 ①.顺序队列 顺序队列的 front 指向队首元素的前一个下标 ②.链式队列 二.顺序队列的基本运算 0.顺序队列的结构体定义 typedef int data_t;typedef struct {data_t *data; …

stable diffusion 反推提示词插件 tagger 的安装,很详细

stable diffusion 反推提示词插件 tagger 的安装&#xff0c;很详细 一、前言二、下载1、方式一2、方式二 一、前言 最近想下载 stable diffusion 反推提示词插件 tagger &#xff0c;也是好一番折腾&#xff0c;这里做个记录。 在安装之前确保能正常访问 github &#xff0c…

图像增强技术分析

图像增强是一种图像处理技术&#xff0c;旨在改善图像的视觉质量&#xff0c;使其更适合显示或进一步分析。这种技术可以应用于多种场景&#xff0c;包括医学成像、卫星图像、视频处理以及文本到图像生成模型等领域。图像增强的目标通常是提高图像的某些视觉特征&#xff0c;如…

[内网渗透]---msf基础-永恒之蓝-ms17-010

what Metasploit&#xff08;通常简称为MSF&#xff09;是一个开源的渗透测试框架&#xff0c;包含大量的已知漏洞利用模块&#xff0c;可以用来攻击目标系统并获取控制权。 how 实验环境&#xff1a;Kali、带有永恒之蓝漏洞的虚拟机且开启445端口(两个虚拟机同一子网) 1.信…

FPGA-Vivado-IP核-虚拟输入输出(VIO)

VIO IP核 背景介绍 Vivado中的VIO&#xff08;Virtual Input/Output&#xff0c;虚拟输入/输出&#xff09; IP核是一种用于调试和测试FPGA设计的IP核。当设计者通过JTAG接口与FPGA芯片连接时&#xff0c;在Vivado的Verilog代码中添加VIO IP核&#xff0c;就可以让设计者与FPG…

TCP 拥塞控制:一场网络数据的交通故事

从前有条“高速公路”&#xff0c;我们叫它互联网&#xff0c;而这条公路上的车辆&#xff0c;则是数据包。你可以把 TCP&#xff08;传输控制协议&#xff09;想象成一位交通警察&#xff0c;负责管理这些车辆的行驶速度&#xff0c;以防止交通堵塞——也就是网络拥塞。 第一…

08_Python数据类型_字典

Python的基础数据类型 数值类型&#xff1a;整数、浮点数、复数、布尔字符串容器类型&#xff1a;列表、元祖、字典、集合 字典 字典&#xff08;Dictionary&#xff09;是一种可变容器模型&#xff0c;它可以存储任意类型对象&#xff0c;其中每个对象都存储为一个键值对。…

3.4.3 __ipipe_init_early之初始化root domain

点击查看系列文章 》 Interrupt Pipeline系列文章大纲-CSDN博客 3.4.3 __ipipe_init_early之初始化root domain 如下图所示&#xff0c;红框里面的函数当前都是空的&#xff0c;本章还是分析蓝框中的代码片段。 第295行&#xff0c;变量ipd指向了ipipe_root即ipd代表root doma…

Java 入门指南:JVM(Java虚拟机)垃圾回收机制 —— 内存分配和回收规则

文章目录 垃圾回收机制堆空间的基本结构内存分配和回收规则对象优先在 Eden 区分配分配担保机制 大对象直接进入老年代长期存活的对象进入老年代主要进行 GC 的区域部分收集 (Partial GC)&#xff1a;Minor GCMajor/Old GCMixed GC 整堆收集&#xff08;Full GC&#xff09; 空…

K-means 算法的介绍与应用

目录 引言 K-means 算法的基本原理 表格总结&#xff1a;K-means 算法的主要步骤 K-means 算法的 MATLAB 实现 优化方法与改进 K-means 算法的应用领域 表格总结&#xff1a;K-means 算法的主要应用领域 结论 引言 K-means 算法是一种经典的基于距离的聚类算法&#xff…

中秋献礼!2024年中科院一区极光优化算法+分解对比!VMD-PLO-Transformer-LSTM多变量时间序列光伏功率预测

中秋献礼&#xff01;2024年中科院一区极光优化算法分解对比&#xff01;VMD-PLO-Transformer-LSTM多变量时间序列光伏功率预测 目录 中秋献礼&#xff01;2024年中科院一区极光优化算法分解对比&#xff01;VMD-PLO-Transformer-LSTM多变量时间序列光伏功率预测效果一览基本介…

人工智能和大模型的简介

文章目录 前言一、大模型简介二、大模型主要功能1、自然语言理解和生成2、文本总结和翻译3、文本分类和信息检索4、多模态处理三、大模型的技术特性1、深度学习架构2、大规模预训练3、自适应能力前言 随着技术的进步,人工智能(Artificial Intelligence, AI)和机器学习(Mac…

TryHackMe 第1天 | Introduction to Cyber Security

偶然之间了解到了TryHackMe这个网站&#xff0c;尝试跟着其中的学习路径进行学习&#xff0c;发现还是挺适合入门网络安全这一领域的。但是这个网站包含了很多内容&#xff0c;如果不用一些东西记录下来&#xff0c;那么很容易忘记&#xff0c;所以打算在此记录一下学习过程。 …

Linux——应用层自定义协议与序列化

目录 一应用层 1再谈 "协议" 2序列化与反序列化 3理解read,write,recv,send 4Udp vs Tcp 二网络版本计算器 三手写序列和反序列化 四进程间关系与守护进程 1进程组 1.1什么是进程组 1.2组长进程 2会话 2.1什么是会话 2.2会话下的前后台进程 3作业控…

nginx实现权重机制(nginx基础配置二)

在上一篇文章中我们已经完成了对轮询机制的测试&#xff0c;详情请看轮询机制。 接下来我们进行权重机制的测试 一、conf配置 upstream backServer{ server 127.0.0.1:8080 weight2; server 127.0.0.1:8081 weight1; } server { listen 80; server_name upstream.boyatop.cn…

一个有趣的“苦无”测试探针笔的设计

设计思路来源 动漫火影中的苦无&#xff0c;在测试过程中多种测试点方便测试&#xff0c;不想每次去找合适的测试工具&#xff0c;例如点测试和连接线测试需要用到不同的接触工具。 PCB设计 这这些焊点都是短接的&#xff08;除了中间的固定孔&#xff09;&#xff0c;直接使…

Leetcode 验证回文串

使用双指针技术&#xff0c;逐步比较字符串中的字符&#xff0c;并忽略非字母数字字符以及大小写&#xff0c;判断该字符串是否为回文。以下是详细解释&#xff1a; 1. 核心思想&#xff1a; 回文串是指正读和反读都相同的字符串。我们需要从字符串的两端开始比较字符&#x…

Python画笔案例-051 绘制赵爽弦图

1、绘制赵爽弦图 通过 python 的turtle 库绘制 赵爽弦图&#xff0c;如下图&#xff1a; 2、实现代码 绘制 赵爽弦图&#xff0c;以下为实现代码&#xff1a; """赵爽弦图.py本程序演录了如何自定义形状&#xff0c;如何把它添加到造型字典。赵爽弦图是用来证明…

JAVA算法数据结构第一节稀疏矩阵

一、稀疏矩阵介绍&#xff1a; 稀疏矩阵是一种特殊类型的矩阵&#xff0c;其中大部分元素都是零。在处理这类矩阵时&#xff0c;如果仍然使用标准的矩阵存储方式&#xff08;即传统的二维数组&#xff09;&#xff0c;则会浪费大量的存储空间来保存零值。为了提高存储效率以及…