我只是用
#include <opencv2/opencv.hpp>
事情很有效。我可以问为什么我们应该这样做:
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/objdetect/objdetect.hpp>
#include <opencv2/highgui/highgui.hpp>
为什么这里有* .hpp文件而不是* .h文件?
请原谅我提出这么简单的问题。
答案 0 :(得分:22)
.hpp
是C ++ 语言头文件的约定。由于OpenCV有一个与C ++并行的 C API 的长篇故事,人们可以很容易地理解为什么编写该库的人选择了这个扩展来避免混淆。
对于全局与小型包含问题,您需要回忆起C / C ++中的工作原理。在编译之前,头文件只是复制到.c文件中。
opencv.hpp
(由于它包含所有其他包含,它是某种保护伞)时,所有库头文件都包含在内并因此被复制到.cpp文件中。这意味着您可以减少输入,但最终会为编译器提供更大的文件。因此,编译时间更长。-lopencv_core -lopencv_imgproc
如果你只使用图像处理模块。答案 1 :(得分:4)
#include <opencv2/opencv.hpp>
此头文件包含其正文中OpenCV中的所有其他头文件。因此,如果您包含该文件,则绰绰有余。
“ .h”代表C,“ .hpp”代表C ++。这只是标准。
答案 2 :(得分:3)
只需打开opencv2 / opencv.hpp文件,我想您会得到答案。