如何高效浏览 OpenCV 仓库以理解代码?
Posted
技术标签:
【中文标题】如何高效浏览 OpenCV 仓库以理解代码?【英文标题】:How to efficiently browse OpenCV repository to understand the code? 【发布时间】:2019-10-14 09:22:10 【问题描述】:我对编码比较陌生,如果我的问题对您来说直截了当,我深表歉意。
我正在尝试理解 OpenCV 代码以便能够添加我的贡献(主要是将 2D 工具转换为 3D,因为这对我的机器学习项目和医疗项目很有用)。还有一些额外的好奇心,因为我喜欢了解事情是如何运作的。
1) 以 GaussianBlur 方法为例。当我在 Python 中调用它时会发生什么?即,Python 代码如何绑定到 C++ 代码?当我浏览存储库时,有所有 C++ 文件,我找不到它在哪里完成。当我用 pip 安装 cv2 时,一切都是自动的,但我想了解这个过程。
2)如果我想了解整个 GaussianBlur 算法,我也不熟悉 C++ 浏览,那么我应该如何继续检索使用的文件(方法和继承的类)。 我在另一个答案中发现https://github.com/opencv/opencv/blob/9c23f2f1a682faa9f0b2c2223a857c7d93ba65a6/modules/imgproc/src/smooth.cpp#L4085 包含该方法,但是我如何自己找到任何方法?为什么它不在主文件夹中,而是在 blob 文件夹中?那么如何找到这个调用的其他方法或类呢?
3) 这更像是一个好奇的问题,因为我不熟悉 makefile,但是 Python 和 C++ 之间的绑定何时完成?当我使用 pip 安装 OpenCV 时,它会自动完成,但我想了解这个过程。
非常感谢您的回答!我会很感激任何教程,因为我在问之前已经用谷歌搜索了很多,当然,但没有找到什么可以帮助我自己。
【问题讨论】:
请问你用的是什么IDE? 我只是在浏览 GitHub 存储库。否则,我使用 Jupyter Notebook for Python 和 Visual Studio Code for C++ 您应该克隆代码以在您的 IDE 中打开它。它将大大简化浏览代码的过程。要了解 c++ 代码,您可以搜索要查找的函数,例如ctrl + F
-> gaussian
。您将找到函数定义并可以通读代码。如果您在该功能中发现有趣的内容,您只需按right mouse button
,然后按go to definition
还可以查看here 以了解如何从 c++ 创建 python 模块以及如何在 python 内部使用它
【参考方案1】:
在 C++ 中,您必须在编译和链接过程中下载库并链接它们(从源代码创建可执行文件时)。
C++ 绑定使用 python.h
c++ 库完成。使用此绑定 OpenCV 模块是为 python 创建的。
对于学习高斯模糊等可以学习图像处理。
Opencv 的方法保存在各自的文件中。像 opencv2/highgui.hpp
用于 OpenCV GUI 像 imshow
。您可以使用#include <opencv2/highgui.hpp>
将它们导入C++(方法被分开到不同的文件中,以减少导入不必要的方法)。
CMake 就像一种脚本语言(它是一种工具),您可以在其中编写一个脚本,说明该工具应如何从源代码构建可执行文件。
入门教程是Here
【讨论】:
非常感谢!其实用OpenCV不会给我带来问题,GaussianBlur也不会,更多的是理解代码,如何找到其他方法的代码,如何高效浏览我想理解的repo c++ 中的OpenCV 类似于python OpenCV,方法已在文件之间拆分。您可以使用 here 中的 搜索框 或 index 来搜索所需的功能。 我使用谷歌查找我在这里找不到的东西。要浏览方法代码,请转到github中的源代码以上是关于如何高效浏览 OpenCV 仓库以理解代码?的主要内容,如果未能解决你的问题,请参考以下文章
不知道这 7 大 OpenCV 函数怎么向计算机视觉专家进阶?