#include opencv中的C++头文件

mak*_*kys 22 c++ opencv

我只是用

#include <opencv2/opencv.hpp>
Run Code Online (Sandbox Code Playgroud)

事情很有效.我可以问为什么我们应该这样做:

#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/objdetect/objdetect.hpp>
#include <opencv2/highgui/highgui.hpp>
Run Code Online (Sandbox Code Playgroud)

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

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

san*_*iso 27

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

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

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


SRF*_*SRF 6

#include <opencv2/opencv.hpp>
Run Code Online (Sandbox Code Playgroud)

该头文件在其主体中包括OpenCV中的所有其他头文件。因此,如果包含该文件,那就绰绰有余了。

.h”用于C,“。 hpp”用于C ++。这只是标准。