在使用OpenCV的时候需要包含头文件,有的是<cv.h>,也有的人是用<opencv2/cv.h>等方式,不仅仅是OpenCV,在平时的编程中,经常遇到这样的困惑,今天终于是搞明白了,在这里分享一下,希望有同样困惑的人能有收获。
首先为了讲解明白,我新建了一个名为“头文件包含方式”的空项目,然后将OpenCV中的一个头文件cv.h来做测试,将其复制成三份,分别重命名为cv1.h,cv2.h,cv3.h,然后将他们分别放在该项目文件夹中的不同级目录下,如下图所示:
#include"cv3.h"
#include"../cv2.h"
#include"../../cv1.h"
然后在VS2013中测试,在开始敲入#include""时就会自动出现cv3.h的提示,这是因为所有的头文件包含都是从第一级开始搜索,就是main.cpp所在的文件夹,所以当我们输入#include""的时候,在“”中输入字母的时候就是在main.cpp所在的文件夹中搜索头文件,因此这里就是显示的是与main.cpp同路径的cv3.h,同理,第二个头文件包含方式就是在第一个的基础上,返回到main.cpp中的上一级文件夹,以此类推。
注意:这样“cv3.h”等“”的方式是自己的头文件,而OpenCV中 因为在一开始的配置时,已经将它的路径添加到系统路径中去了,所以在包含OpenCV的头文件的时候就不是用“”号了,而是用系统头文件包含符号<>。