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.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」
opencv標頭檔案
自 1.hpp檔案是.h和.cpp檔案在一起的 2.include 就包含了opencv庫所有標頭檔案,所以很多時候都是直接include 3.一些用到的庫介紹 calib3d 其實就是就是calibration 校準 加3d這兩個詞的組合縮寫。這個模組主要是相機校準和三維重建相關的內容。基本的多視...
標頭檔案的相互包含
標頭檔案的相互包含在編譯時如果順序不注意就很容易造成編譯錯誤。遇到乙個標頭檔案,一開始並沒有包含其他標頭檔案而是定義了一些列舉,然後再包含另外乙個標頭檔案,這樣就很類似於 1 1 2 1 1 在1標頭檔案中包含2標頭檔案,預處理時就是以這樣的形式處理交給編譯器,原本的用意是在1標頭檔案的包含2之前的...
精確包含標頭檔案
原文 將原文精簡了一下 一 只包含必需的標頭檔案。當foo.c檔案在被編譯時,第一步要做的是預處理,預處理的最終結果可以看作是將stdio.h和time.h中的內容全部放到foo.c檔案中,當然,如果stdio.h和time.h中又包含其它的標頭檔案的話,它們也都全部會被放入到最終的foo.c檔案中...