[MO]opencv包含头文件出错的粗略解读


Opencv新手遇到的问题很多问题之一就是#include opencv头文件的时候经常会出错。程序明明就很简单,一个稍懂opencv的人都知道程序没有错误,但是一编译就是一大堆错误,就是找不到头文件。

fatal error C1083: 无法打开包括文件:“cv.h”: No such file or directory
fatal error C1083: 无法打开包括文件:“highgui.h”: No such file or directory
……
这样的错误很常见吧,这是极有可能是文件(cv.h,highgui.h的路径设置得不对)。opencv从2.2版本以后include下有两个文件夹 opencv 和opencv2 。从官方的意思来看,它逐渐喜欢用opencv2里面的那种包含头文件的方式。

注意是opencv2.2安装路径。每个人的路径都可能有所不同!!

  


解读一 :Opencv(C:\OpenCV-2.2.0\VS2008\include\opencv)这个文件夹里面有什么呢?


cv.h highgui.h是不是很熟悉哈,如果你想用#include “cv.h”这样的方式,那请确保你配置编译器包含文件的时候路径是:C:\OpenCV-2.2.0\VS2008\include\opencv。因为cv.h在C:\OpenCV-2.2.0\VS2008\include\opencv里面。这就好比博主在中国,你非得跑去非洲喊我的名字找我,能找到我才怪呢!(关于配置编译器可以点这里)

如果你在编译器配置里面填入的是:C:\OpenCV-2.2.0\VS2008\include\,那当你调用cv.h的时候你必须是这样的:

#include “opencv/cv.h”

解读二:Opencv2(C:\OpenCV-2.2.0\VS2008\include\opencv2)这个文件夹里面有什么呢?

   

Opencv.hpp本身是一个头文件,它包含了opencv全部的头文件。有图有真相:

#ifndef __OPENCV_ALL_HPP__

#define __OPENCV_ALL_HPP__

 

#include "opencv2/core/core_c.h"

#include "opencv2/core/core.hpp"

#include "opencv2/flann/flann.hpp"

#include "opencv2/imgproc/imgproc_c.h"

#include "opencv2/imgproc/imgproc.hpp"

#include "opencv2/video/tracking.hpp"

#include "opencv2/video/background_segm.hpp"

#include "opencv2/features2d/features2d.hpp"

#include "opencv2/objdetect/objdetect.hpp"

#include "opencv2/calib3d/calib3d.hpp"

#include "opencv2/ml/ml.hpp"

#include "opencv2/highgui/highgui_c.h"

#include "opencv2/highgui/highgui.hpp"

#include "opencv2/contrib/contrib.hpp"

 

#endif


除此之外的的都是文件夹,每一个文件夹都是一个头文件,仅此而已。所以如果你配置编译器包含文件的时候是:C:\OpenCV-2.2.0\VS2008\include,那当你想用这种新的方式调用opencv函数的时候,那最简单最可靠的方式就是

#include “opencv2/opencv.hpp”

后话

        如果你不知道到底是用C:\OpenCV-2.2.0\VS2008\include\opencv还是C:\OpenCV-2.2.0\VS2008\include\opencv2,那干脆在包含文件那一项里面,把这两个都填进去!!这样错误的概率就有可能会少了很多。


其实,不管是旧的方式还是新的方式,你只要明确你要包含的头文件在哪个文件夹里面,路径对了,然后再配置编译器。那一切就容易了,对于新手来说,很多东西都是带有一种畏惧、膜拜心理。当初对于动不动就自己写一个头文件,然后包含进去的人超膜拜。后来摸清楚什么是头文件以后,心理拔凉拔凉的:哥怎么就那么容易膜拜人呢,(*^__^*) 。

先写这么多权当抛砖引玉!


你可能感兴趣的:(OpenCV开发环境搭建,include,编译器,file,c)