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版本以后<opencv root>include下有两个文件夹 opencv 和opencv2。从官方的意思来看,它逐渐喜欢用opencv2里面的那种包含头文件的方式。
注意:<opencv root>是opencv2.2安装路径。每个人的路径都可能有所不同!!
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”