用Cmake build OpenCV后,在VS中查看OpenCV源码的方法(环境VS2022+openCV4.8.0) Part I

用Cmake build OpenCV后,在VS中查看OpenCV源码的方法

Part I

本文打算分成两部分写:

        第一部分力求用最简单的办法帮助大家直接在VS中查看OpenCV的源码。这种方法最大的优点就是不容易出错,且操作简单。如果只是需要查看OpenCV源码的同学,建议直接用这个方法。

        第二部分才会介绍在自己的项目调用OpenCV库,且依然可以查看源码的方法。


1,下载

OpenCV官网:

Releases - OpenCV

Cmake官网:

Download | CMake


 2,安装

opencv下载后直接解压到一个地方就行了

 

 cmake的安装注意一下这个选项就行了。


 3,用cmake build openCV

3,1 在之前解压缩好的opencv目录下,创建一个新的文件夹"Rebuild_sources"用于保存build后的数据。 

3.2打开刚刚安装好的camke,并选择正确的路径

第一个是我们要build的源文件,来自于openCV官方压缩包中的source文件夹。(注意:这里我们只build source文件夹中的内容)

下面那个where to build the binaries就配置我们刚刚新建的那个文件夹"Rebuild_sources"。

3.3 然后选择 configure

 

3.4 选择对应的VS版本,我的是2022

选择平台x64

 

 然后点击Finish,Cmake就开始自动配置了。

3.5配置完成后会有一些warning,不管他直接点击generate.

 generate完成后,我们直接创建好的"Rebuild_sources"文件夹下就有东西了,找到"OpenCV.sln",然后用VS启动他。

 3.6在VS2022中依次选择生成--->批生成

在“批生成”的窗口中选择ALL_BUILD和INSTALL后,点击生成。

 

 生成中,这个过程大概要持续几分钟。

 

 4,查看源码

在VS中搜索你想看的源码,然后用control+鼠标一级一级点进去就能看到OpenCV中最底层的源码了。

例如,在“整个解决方案”中搜索“undistortImage”。

按住control键不动,用鼠标点进去,就能看到源码了。

 该函数的源码如下:

 如果是没有经过cmake重新build后的opencv,你点进去就找不到函数的定义(如下图,这是我在另一个项目中查看这个函数的提示),即,底层源码。


  (全文完)

作者 --- 松下J27

参考文献(鸣谢):

        1,Download | CMake

        2,OpenCV - Open Computer Vision Library

 版权声明:文中的部分图片,文字或者其他素材,可能来自很多不同的网站和说明,在此没法一一列出,如有侵权,请告知,立即删除。欢迎大家转载,但是,如果有人引用或者COPY我的文章,必须在你的文章中注明你所使用的图片或者文字来自于我的文章,否则,侵权必究。 ----松下J27 

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

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

相关文章

matlab使用教程(24)—常微分方程(ODE)求解器

1.常微分方程 常微分方程 (ODE) 包含与一个自变量 t(通常称为时间)相关的因变量 y 的一个或多个导数。此处用于表示 y 关于 t 的导数的表示法对于一阶导数为 y ′ ,对于二阶导数为 y ′′,依此类推。ODE 的阶数等于 y 在方程中…

Springboot配置高级

临时属性设置 带属性数启动SpringBoot java –jar springboot.jar –-server.port80携带多个属性启动SpringBoot,属性间使用空格分隔 属性加载优先顺序 参看https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-fea…

pgadmin4中的备份与恢复

一,postgresql 数据的备份与恢复 (一)数据库备份与恢复 1,备份 windows环境 1> dump 逻辑备份 1,用管理员身份打开power shell 2,切换到本机 postgresql 安装目录下的 bin 目录: PS C…

GIT 常用指令

基础指令 $ git init #初始化仓库,在该文件夹创建的为workspace$ git add . #已暂存 [.通配符,全部添加]$ git commit -m "log add file" #提交到仓库,并写了日志 ”log add file“$ git status #查看状态,可查看被修改的文件…

Prometheus+Grafana+AlertManager监控SpringBoot项目并发送邮件告警通知

文章目录 PrometheusGrafanaAlertManager监控平台搭建新建SpringBoot项目为Prometheus提供指标新建项目,引入依赖新建接口,运行程序 推送指标到pushgateway 开始监控Grafana连接Prometheus数据源导入Grafana模板监控SpringBoot项目 邮件告警通知同系列文…

Windows如何部署Redis

一、简介 Redis (Remote Dictionary Server) 是一个由意大利人 Salvatore Sanfilippo 开发的 key-value 存储系统,具有极高的读写性能,读的速度可达 110000 次/s,写的速度可达 81000 次/s 。 二、下载 访问 https://github.com/tporadows…

字符串经典问题

1. 验证回文串 验证回文串 如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。 字母和数字都属于字母数字字符。 给你一个字符串 s,如果它是 回文串 ,返回 t…

Vue2向Vue3过度核心技术computed计算属性

目录 1 computed计算属性1.1 概念1.2 语法1.3 注意1.4.案例1.5.代码准备 2 computed计算属性 VS methods方法2.1 computed计算属性2.2 methods计算属性2.3 计算属性的优势2.4 总结 3 计算属性的完整写法 1 computed计算属性 1.1 概念 基于现有的数据,计算出来的新属…

React Navigation 开发准备

需要 React Native 使用 React Navigation 的话,我们需要首先安装如下几个包: npm install react-navigation/native npm install react-native-screens react-native-safe-area-context开发之前做一些处理 如果您使用的是 Mac 并针对 iOS 进行开发&am…

探索AIGC人工智能(Midjourney篇)(一)

文章目录 案例图片 Midjourney注册 创建Discord账号 下载客户端 添加Midjourney到自己的服务器 用Midjourney画一只会飞的鸭子 Midjourney绘画指令 Midjourney绘画指令_激发Midjourney的创造力 Midjourney绘画指令_Seed指令 Midjourney光线关键词,打造震撼…

leetcode做题笔记98. 验证二叉搜索树

给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 思路一:递归 …

软件宇宙中的星体:软件群星的闪耀

软件宇宙中的星体:软件群星的闪耀 引言 在当今信息时代,软件已经成为人类社会不可或缺的一部分。无论是移动应用、桌面软件、云计算平台,还是嵌入式系统,各种类型的软件构成了一个庞大而复杂的宇宙。这些软件就如同群星一样&…

MySQL 安装配置

MySQL 安装配置 MySQL 是最流行的关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。 MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。 MySQL由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL…

XGBoost,NVIDIA是什么

目录 XGBoost 算法层面 什么是 XGBoost GBDT是什么 GBDT中的GB 为何选择 XGBoost? XGBoost 的优势和属性 XGBoost 和数据科学家 为何 XGBoost 在 GPU 上表现更出色 XGBoost RAPIDS GPU 加速的 XGBoost NVIDIA是什么 使用 Spark XGBoost 的 GPU 加速端…

晨控CK-GW208与三菱L系列PLC以TCP通讯手册

晨控CK-GW208是一款支持标准工业以太网协议的IO-LINK主站网关,方便用户快速便捷的集成到 PLC 等控制系统中。 CK-GW208主站网关集成 8 路 IO-LINK 通信端口,采用即插即用模式,无需繁琐的配置,减轻现场安装调试的工作量。为了满足…

如何撰写具有传播力的品牌软文?

企业为了能将自己的品牌宣传推广出去,不论是在品牌初创还是成熟阶段都会撰写很多的新闻软文稿件发布在各大媒体平台上,为的就是能起到持续宣传和影响的效果! 软文不但要求短小精悍,更注重内容的精准。不管是什么类型的文章&#…

android - fragment 数据丢失?状态丢失?

最佳答案 一些状态丢失的例子: 1. 假设您有一个按钮和一个 TextView 。在代码中,你已经定义了初始值为 0 的整数 i,它通过单击按钮递增 1,并且它的值显示在 TextView 中。假设你已经按下按钮 5 次,那么 textview 将被设置为 0。也…

数据库选型<1>

数据库选型 1.SQL与NoSQL1.SQL2.NoSQL 2.各种数据存储的适应场景1.MySQL 3.构建MySQL开发环境 1.SQL与NoSQL 1.SQL 关系型数据库 MySQLOracleSQL serverPostGreSQL 关系型数据库的特点 数据结构化存储在二维表中(新增JSON存储方式,也有nosql的特点)支持事务的原子…

从按下电源键到进入系统,CPU在干什么?

本专栏更新速度较慢,简单讲讲计算机的那些事,简单讲讲那些特别散乱杂的知识,欢迎各位朋友订阅专栏 非常感谢一路相伴的大佬们 浅淡计算机系列第2篇 目录 通电 保护模式和实模式 内存管理单元MMU 逻辑地址?物理地址&#xff1…

MyBatis:使用注解让数据库操作更简单

目录 一、简介 二、配置 三、基于注解的基本使用 四、测试 总结 一、简介 在Java开发中,数据库操作是一个常见而重要的任务。为了方便地执行SQL语句,获取结果集,处理异常等,我们通常需要使用JDBC(Java Database …