在Windows上用Visual Studio编译OpenCV

news2024/9/21 16:39:00

在Windows上编译开源项目,有时候让人痛不欲生,有时候却出奇地顺利。OpenCV属于后者。本文记录这次愉快的过程。

注:OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。它提供了大量的函数和算法(官网上说有2500个算法),用于处理图像和视频。这些功能涵盖了从图像的读取、写入和基本处理(如裁剪、旋转、缩放),到复杂的对象检测、人脸识别、图像分割等高级任务。OpenCV在自动驾驶、医疗诊断、安防监控等众多领域都发挥着重要作用。

以下是完整的五个步骤:

  1. 前提:本人的电脑是Windows 10,已经安装了Visual Studio 2019。你也可以去微软官网下载VS 2022社区版,个人是可以免费使用的哦。
  2. 下载CMake工具。OpenCV使用CMake做配置管理。建议到cmake.org官网下载工具的最新版,选择“Windows x64 ZIP”即可,下载完了在本地解压,可以直接使用。
  3. 从GitHub下载OpenCV源代码:git clone https://github.com/opencv/opencv.git
  4. 通过CMake生成编译工程。首先,运行cmake-gui.exe:

然后,顺序执行以下5个步骤(假设OpenCV源代码位于D:\Dev\GitHub\opencv目录下):

  • 点击“Browse Source”按钮,指定OpenCV源代码的位置,这里有一个关键的CMakeLists.txt文件;
  • 点击“Browse Build”按钮,指定编译生成的文件路径,建议在opencv目录下新建一个build文件夹;
  • 点击“Configure”按钮进行配置,这个过程比较耗时(大约300秒),上图中红色部分是各种配置选项,具体释义参见官方文档;
  • 点击“Generate”按钮,即生成了所有必要的Visual Studio工程;
  • 点击“Open Project”按钮,即可用Visual Studio打开build目录下的OpenCV.sln。

5. 编译OpenCV源码,并尝试运行第一个程序。在Visual Studio里看起来是这样的:

我们可以来试试applications文件夹下的opencv annotation这个程序,它的功能是:遍历并依次显示指定目录下的图像文件,允许用户在图像上框选矩形区域,并把这些区域坐标保存到一个本地文件中。

先准备测试素材吧。在D盘创建一个testimages文件夹,再在其中放几个图像文件。然后在Visual Studio中将opencv annotation“设为启动项目”,再对这个项目执行“生成”,真的是一气呵成,编译通过 o(* ̄▽ ̄*)ブ

在让程序运行起来之前,还需要给它设置命令行参数,如:-a=D:\opencv_out.txt -i=D:\testimages\。参见opencv annotation项目的属性窗口:

程序运行起来像这样:

操作方法:在图片上按下鼠标并拖动,可以框选一个区域,然后在键盘上按下C键就可以确认这个区域,接着鼠标就能继续选择更多的区域;按下D键可以删除最近一个区域;按下N键可以切换到下一个图像。程序退出后,还可以打开D:\opencv_out.txt文件看一下具体的输出内容。

至此,OpenCV在Windows上的编译任务完成!

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

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

相关文章

移动学习平台小程序的设计

管理员账户功能包括:系统首页,个人中心,教师管理,学生管理,班级管理,课程分类管理,课程信息,作业信息管理,系统管理 微信端账号功能包括:系统首页&#xff0…

全面解析被低估的 Symbiosis — 一站式跨链 AMM DEX,跨链交易的未来

在区块链技术快速发展过程中,互操作性和流动性问题一直是行业面临的核心挑战。随着越来越多的区块链网络(无论是 Layer 1 还是 Layer 2),以及不同虚拟机环境(EVM 和非 EVM)的出现,用户和开发者都…

P37-数据存储

数据类型介绍 前面学习了基本的内置类型: 以及它们所占存储空间的大小。 类型的意义: 1.使用这些类型开辟空间的大小(大小决定了使用范围) 2.如何看带内存空间的视角 类型的基本归类 整形家族 之所以char也分类在其中是因为实…

云原生时代的数据守护者:Velero 备份与迁移实战

项目背景 在云计算和容器技术飞速发展的今天,Kubernetes 已经成为容器编排和管理的事实标准。然而,随着业务的不断扩展,如何在云原生环境下保护和迁移 Kubernetes 集群资源,成为了摆在运维人员面前的一大挑战。Velero&#xff0c…

RazorSQL for Mac/Win:强大的跨平台多功能SQL数据库编辑器RazorSQL for Mac/Win:功能强大的跨平台 SQL 数据库编辑器

RazorSQL 是一款备受赞誉的多功能 SQL 数据库编辑器,适用于 Mac 和 Windows 操作系统,为用户提供了高效、便捷且强大的数据库管理和操作体验。 首先,RazorSQL 支持多种主流的数据库类型,包括但不限于 MySQL、Oracle、SQL Server、…

搭建内网开发环境(三)|基于nexus搭建docker私服

引言 上一篇教程中演示如果安装和 nexus 的基本使用,本篇教程将演示如果在 nexus 中搭建 docker 私服,并实战如何上传镜像到私服和从私服下载镜像。 搭建内网开发环境(一)|基于docker快速部署开发环境 搭建内网开发环…

MySQL基础--触发器,锁

触发器 触发器是与表有关的数据库对象,指在 insert/update/delete 之前或之后,触发并执行触发器中定义的 SQL 语句集合,触发器的这种特性可以协助应用在数据库端确保数据的完整性,日志记录,数据校验等操作。 使用别名 …

KNN 图像识别

KNN(K-Nearest Neighbors,K最近邻)算法是一种简单而有效的分类算法,也可以用于图像识别。它的基本思想是通过计算样本之间的距离,将待分类的样本归为其在训练集中最相近的K个样本所属的类别中最常见的类别 1. 准备工作…

阿里巴巴25校招内推

内推投递链接: http://aidc-jobs.alibaba.com/campus/qrcode/home?codeMx8ppk_s4MjkOFnb6XS3Vw%3D%3D 流程安排 简历投递(网申、内推) 8.16开启笔试:集中笔试为8月-10月面试:启动后持续推进offer发放:启动后持续推进 内推二维…

FPGA 综合笔记

仿真时阻塞赋值和非阻塞赋值 Use of Non-Blocking Assignment in Testbench : Verilog Use of Non-Blocking Assignment in Testbench : Verilog - Stack Overflow non-blocking assignment does not work as expected in Verilog non-blocking assignment does not work a…

华为APP审核,权限说明弹窗

工具类 import android.app.Activity; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.widget.PopupWindow; import android.widget.TextV…

OD C卷 - 建立Huffman树

生成Huffman树 (100) 给定一个数值数组weights&#xff0c;每个值代表二叉树叶子节点的权值&#xff08;>1&#xff09;;根据权值数组&#xff0c;生成哈夫曼树&#xff0c;并中序遍历输出&#xff1b;左节点权值< 右节点权值&#xff0c;根节点权值为左右节点权值之和&…

git提交规范检查husky

一、Eslint 尤雨溪推荐的 prettierrc 配置&#xff0c;句尾不带分号 单引号。 尤雨溪推荐配置&#xff1a;vue-next/.prettierrc lint lint 是最著名的 C 语言工具之一&#xff0c;是由贝尔实验室 SteveJohnson 于 1979 在 PCC(PortableC Compiler) 基础上开发的静态代码分…

自己搭建远程桌面服务器-RustDesk 极简版

linux搭建RustDesk保姆间教程_rustdesk linux-CSDN博客https://blog.csdn.net/yzs2022/article/details/135136491 背景 在某公司工作&#xff0c;向日葵等远程办公软件均已屏蔽&#xff0c;无法使用&#xff08;也没有明文规定不允许使用远程控制软件&#xff09;&#xff0c…

2024批量下载知乎回答/文章/想法/专栏/视频/收藏夹,导出excel和pdf

之前分享过文章2024 批量下载知乎回答/文章/想法/专栏导出excel和pdf&#xff0c;再次更新&#xff0c;2024 批量下载知乎回答/文章/想法/专栏/视频导出 excel 和 pdf&#xff0c;今天再加上知乎收藏夹批量下载。 下载所有知乎回答以渤海小吏的号为例 https://www.zhihu.com/p…

关于SQLModel库的一些封装思路和实战,fastzdp_sqlmodel库封装过程中的一些笔记,20240817

概述 最近在对SQLModel做一些封装&#xff0c;本篇文章主要记录封装过程中的一些思路和实战代码。 实现or查询 原本的代码 from typing import Optional from sqlmodel import Field, SQLModel, create_engine, Session, select, or_class Hero(SQLModel, tableTrue):id: O…

【笔记】PUML语法使用

Sequence 时序图 类型&#xff1a;participant 1、排序 order participant NAME order NUMBER 默认是按出现定义的先后顺序排列&#xff0c;如下图。 【Sequence】未定义order的效果图 可以通过自定义改变&#xff0c;使用order关键字&#xff0c;将按ABC进行排序。 partici…

20 以太网帧格式及命名方法

以太网帧格式及命名方法 一、以太网帧格式及命名方法 &#xff08;一&#xff09;帧格式及命名标准 1.以太网帧格式 ​ 802.3 以太网帧格式 ​ 以太网帧数据的长度46-1500 ​ 以太网帧的长度64-1518 ​ 帧校验序列&#xff08;FCS&#xff09;&#xff1a;从目的地址开始…

Binance 如何使用 Quickwit 构建 100PB 日志服务(Quickwit 博客)

三年前&#xff0c;我们开源了 Quickwit&#xff0c;一个面向大规模数据集的分布式搜索引擎。我们的目标很宏大&#xff1a;创建一种全新的全文搜索引擎&#xff0c;其成本效率比 Elasticsearch 高十倍&#xff0c;配置和管理显著更简单&#xff0c;并且能够扩展到 PB 级别的数…