OpenCV新手遇到的问题很多问题之一就是#includeopencv头文件的时候经常会出错。程序明明就很简单,一个稍懂opencv的人都知道程序没有错误,但是一编译就是一大堆错误,就是找不到头文件。
- fatal error C1083: 无法打开包括文件:“cv.h”: No such file or directory
- fatal error C1083: 无法打开包括文件:“highgui.h”: No such file or directory
- ……
注意:<opencv root>是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,那干脆在包含文件那一项里面,把这两个都填进去!!这样错误的概率就有可能会少了很多。
其实,不管是旧的方式还是新的方式,你只要明确你要包含的头文件在哪个文件夹里面,路径对了,然后再配置编译器。那一切就容易了,对于新手来说,很多东西都是带有一种畏惧、膜拜心理。当初对于动不动就自己写一个头文件,然后包含进去的人超膜拜。后来摸清楚什么是头文件以后,心理拔凉拔凉的:哥怎么就那么容易膜拜人呢,(*^__^*) 。
先写这么多权当抛砖引玉!
- 顶
- 26
- 踩
- 1