当前位置: 首页 > news >正文

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

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

Part II

用Cmake build OpenCV后,在VS中查看OpenCV源码的方法(环境VS2022+openCV4.8.0) Part I_松下J27的博客-CSDN博客

在上一篇文章中,我用cmake成功的生成了opencv.sln,后面都不会再用cmake了,直接在VS中操作。


1,用VS打开OpenCV.sln,并编译该项目

1.1,打开后,确认当前的运行环境为Debug+x64模式,然后依次点击生成——>生成解决方案

实际上在你打开opencv.sln后不做任何选择的话,系统默认是在生成“ALL_BUILD”的解决方案。

 耐心等待VS编译,编程成功后系统会有提示。

编译成功后,在opencv480_build里的lib和bin这两个文件夹中会分别新增出两个“Debug”文件夹。

 

1.2  ALL_BUILD生成好以后,再生成下面的INSTALL,鼠标右键单击INSTALL选择生成。

编译成功后会在我们自己创建的 “opencv480_build”文件夹中,新增一个文件夹“install”。

 

        这一步的目的是把我们未来调用opencv库时所需要的所有文件都一并放到这个文件夹中,方便将来使用。

1.3, 把前面的1.1和1.2再来一遍,之前我们都是debug+x64模式下生成的,这一步改成release+x64模式。

1.3.1此处选择Release

1.3.2 此处选择Release选择生成——>生成解决方案。 

 1.3.3 用同样的方式再次生成“INSTALL”。 

这一步也完成后,在我们自创的opencv480_build中的lib和bin文件中,会新增出两个“Release”文件夹。

 

 

 release和debug模式下所生成的文件都是同名文件,唯一的区别就是在debug模式下所生成的文件的文件名会多个d以示区别。

 8,查看Opencv源码

        前面的编译全都完成了,这个时候,我们就可以在VS中查看openCV的源码了。(只是到目前为止我都还没有介绍如何在自己的项目中调用Opencv库,这个后面会讲)

        举个例子,在我们的打开的opencv.sln中,搜索(记得在“整个解决方案”中搜)我们想查看源码的函数名,比如说imread。

        只要能找到任何一处的引用,按住control然后单击鼠标左键,不断的往底层查看,就能看到imread这个函数的源代码了。

 这是上图函数的下一层,同时我们看到他被保存在“imgcodecs.hpp”中。

 再下一层,我们找到了imread的具体实现函数,他在loadsave.cpp中。同时,我们还看到了imread所调用的底层子函数也是核心函数imread_()。

 继续跟进到“imread_()”函数中,我们就能看到opencv的imread函数究竟是如何实现的了。

 

        小结:opencv作为Intel公司的开源代码,编码风格非常专业,而且里面实现的底层算法也非常的易读,同时还配有opencv的官方说明文档,是学习用C语言实现的各种图像算法的绝佳资料。无奈,鄙人最近才开始接触,之前一直成迷于matlab,感觉错过了一个世纪。

        问了周围的一些同事,有些人在上大学的时候就已经开始学习opencv了。。。哎。后面的文章我接着介绍如在自己的库中调用OpenCV的库,并同样能够在debug的时候,查看opencv的底层代码。


  (全文完)

作者 --- 松下J27

参考文献(鸣谢):

        1,Download | CMake

        2,OpenCV - Open Computer Vision Library

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

http://www.lryc.cn/news/141594.html

相关文章:

  • 深度学习5:长短期记忆网络 – Long short-term memory | LSTM
  • LabVIEW开发灭火器机器人
  • 1.2 Kali Linux的网络配置
  • 目标检测的训练过程
  • 软考高级系统架构设计师系列论文七十七:论软件产品线技术
  • 基于大语言模型知识问答应用落地实践 – 知识库构建(上)
  • 一文1500字从0到1搭建 Jenkins 自动化测试平台
  • 前端面试:【实际项目经验】团队协作、代码管理和Git命令梳理
  • 关于异数OS服务器CPU效能分析工具
  • 十四、pikachu之XSS
  • 五分钟了解最短路径寻路算法:Dijkstra 迪杰斯特拉
  • 【ARM】Day8 中断
  • 大数据Flink(六十八):SQL Table 的基本概念及常用 API
  • 算法练习- 其他算法练习6
  • ModaHub魔搭社区:WinPlan经营大脑管理中心
  • 滑动窗口系列4-Leetcode322题零钱兑换-限制张数-暴力递归到动态规划再到滑动窗口
  • Nginx全局配置
  • VUE笔记(四)vue的组件
  • 菜鸟教程《Python 3 教程》笔记
  • JAVA学习-愚见
  • Watch数据监听详解
  • UML建模以及几种类图的理解
  • opencv进阶18-基于opencv 决策树导论
  • 13.4 目标检测锚框标注 非极大值抑制
  • 【论文笔记】最近看的时空数据挖掘综述整理8.27
  • 【大模型】基于 LlaMA2 的高 star 的 GitHub 开源项目汇总
  • 解决elementUI打包上线后icon图标偶尔乱码的问题
  • yolov3加上迁移学习和适度的数据增强形成的网络应用在输电线异物检测
  • 香橙派OrangePi zero H2+ 驱动移远EC200A
  • 写一个java中如何用JSch来连接sftp的类并做测试?(亲测)