#include opencv中的C ++头文件

时间:2013-10-04 09:13:08

标签: c++ opencv

我只是用

#include <opencv2/opencv.hpp>
事情很有效。我可以问为什么我们应该这样做:

#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/objdetect/objdetect.hpp>
#include <opencv2/highgui/highgui.hpp>

为什么这里有* .hpp文件而不是* .h文件?

请原谅我提出这么简单的问题。

3 个答案:

答案 0 :(得分:22)

.hpp是C ++ 语言头文件的约定。由于OpenCV有一个与C ++并行的 C API 的长篇故事,人们可以很容易地理解为什么编写该库的人选择了这个扩展来避免混淆

对于全局与小型包含问题,您需要回忆起C / C ++中的工作原理。在编译之前,头文件只是复制到.c文件中。

  • 当您使用全局包含opencv.hpp(由于它包含所有其他包含,它是某种保护伞)时,所有库头文件都包含在内并因此被复制到.cpp文件中。这意味着您可以减少输入,但最终会为编译器提供更大的文件。因此,编译时间更长
  • 使用本地头文件时,您一次只需添加一个OpenCV模块。因此,如果您将自己限制在实际需要的模块中,则可以进行更快的编译。另一个优点是您可以了解您在程序中使用的模块,这有助于您键入相应的正确的链接器选项,例如-lopencv_core -lopencv_imgproc如果你只使用图像处理模块。

答案 1 :(得分:4)

#include <opencv2/opencv.hpp>

此头文件包含其正文中OpenCV中的所有其他头文件。因此,如果您包含该文件,则绰绰有余。

.h”代表C,“ .hpp”代表C ++。这只是标准。

答案 2 :(得分:3)

只需打开opencv2 / opencv.hpp文件,我想您会得到答案。