类似opencv2/core.hpp与opencv2/core/core.hpp的区别

以前一致有过这部分的疑惑,为什么有些地方会出现<opencv2/highgui.hpp>有些地方会出现<opencv2/highgui/highgui.hpp>,具体会有什么区别。
没有查到相关的解释,可能是认为这类问题太无聊了。。。
以下是自己的判断+猜测:

1.在存放opencv文件夹下/include/opencv2中:
在这里插入图片描述
会有各个模块命名的文件夹和同名的hpp文件;
然后比较一下文件夹内.hpp文件与文件夹外同名.hpp文件区别:

以core为例:
core文件夹内有大量hpp文件
在这里插入图片描述

打开opencv2/core/core.hpp文件:
在这里插入图片描述包含了"opencv2/core.hpp"文件,因此打开"opencv2/core.hpp"与"opencv2/core/core.hpp"应该是同一个效果;

打开opencv2/core.hpp:
在这里插入图片描述
opencv2/core.hpp包含了一部分core文件夹内的一些其他"*.hpp"文件,同时自身也定义了许多函数:
在这里插入图片描述
因此推测:
opencv2文件夹下的"模块名.hpp"文件包含该模块的主要实现;
如需要用到core模块的基本功能,只需#include <opencv2/core.hpp>

若是不清楚opencv中需要用到哪些模块,可以直接#include <opencv2/opencv.hpp>
打开opencv2/opencv.hpp:
在这里插入图片描述opencv.hpp类似于一个总纲,包含所有的功能模块;

猜你喜欢

转载自blog.csdn.net/sazass/article/details/89177414