ORB-SLAM2在window下的配置 (2)

OpenCV的配置


OpenCV是一個開源圖像庫,不僅在ORB-SLAM2中被使用,在配置ORB-SLAM2依賴的其他庫中也有所運用,因此我們首先配置OpenCV.

OpenCV下載的地址是:http://opencv.org/

至於版本,原先ORB-SLAM2是用2.4.x的,事實上我們用3.x的版本也是可以的。本人比較喜歡較新的東西,因此我們就用3.x的吧。這兩者的差別在於一個no_free_module,(似乎是)從3.0開始,這個模塊從OpenCV消失,裏邊包含了諸如sift、surf的一些API,但這不妨礙我們配置ORB-SLAM2,如果以後需要用到這些算子的時候,我們可以從2.4.x版本的代碼中摳出來。(不過3.x應該也有才對,我有點忘了)

那麼版本是3.x,下載window版本的,是一個安裝程序,我們將其安裝在衆庫所在之處。由於OpenCV安裝後的文件夾都叫opencv,因此我們爲其建立一個文件夾放,取個能區分版本的名字,如我的:”OpenCV3_1”.

OK,OpenCV算是配置好了(注意了,我們默認忽略運行環境配置),還是挺傻瓜的。但爲了能往後給其他的庫使用,我們爲其建立一個屬性表吧。

打開vs2017,新建一個控制檯程序,步驟隨便來,我們主要爲了建立個屬性表。
建立一個工程

完成之後,右鍵”屬性管理器“(注意,不是”屬性”,vs默認不打開此窗口,請在上方導航->視圖中尋找)中的項目->添加新的屬性表,打開新建屬性表的窗口,設置好名稱和路徑。

注意,名稱要保留着後綴.props,沒有後綴雖然vs中也可以用,但是顯示在電腦裏,就是個很醜的不知其用的白色文件圖標,vs不會幫我們自動補充後綴(在新建.c和.h的時候倒是會)。

路徑一般會被設置爲本工程所在目錄,這是因爲不同工程所需要的庫往往不同。我們配的OpenCV是爲衆多工程服務的,因此我們把路徑改在專門放屬性表的地方吧。多說一句,命名方式最好能體現版本號,以及是否是debug或是release版本,如果是debug版本,我們在名稱末尾(當然是後綴前)加個’d’.

OK,現在我們建立了一個空的屬性表,在”屬性管理器”中,我們的項目裏可以看到它就在那。你會發現那裏有幾個文件夾在那,分別對應不同的編譯模式,這裏有個細節,如果你是右鍵項目來新建屬性表的,所有模式下,都會添加那個屬性表,他們均指向同一個東西。如果是右鍵文件夾(或者叫“篩選器”)的,那麼只會在那個模式下添加屬性表。

雙擊該屬性表,我們要補充的內容有三處:

  • 包含目錄,即頭文件目錄
  • 庫目錄,即.lib文件目錄
  • 庫文件,即用於鏈接的.lib文件全稱

記住,我們配置所有庫,基本思路都是這樣的。有人說,還有個dll的配置呢。那是運行時的問題,我們待會再說。

點擊左邊導航,到”VC++目錄”,要修改的即是”包含目錄”和”庫目錄”,前者讓我們順利include庫的頭,後者讓我們順利將其接口鏈接進我們的程序。
屬性表改寫1
上面的內容只是示意。有個細節,屬性表中黑體部分的意思是,此處內容非默認內容的意思。

雙擊以上右邊的欄目,可以編輯目錄,目錄可以追加多條。打開OpenCV所在目錄,將
- XXX/opencv/build/include
- XXX/opencv/build/include/opencv2
- XXX/opencv/build/include/opencv
添加至”包含目錄”中(XXX爲你的根目錄)

將XXX/opencv/build/x64/vc14/lib添加至”庫目錄”。

點擊”應用”一下,然後點擊左邊導航到鏈接器->輸入,我們需要將.lib的全稱(包括後綴)寫在”附加依賴項“。
屬性表修改2
這個是OpenCV提供給我們程序鏈接的接口,它的全稱去哪找呢?還記得剛纔的庫目錄嗎,鏈接的時候vs就會去庫目錄下尋找庫文件.lib進行鏈接,所以名稱可以在庫目錄下找到:opencv_world310.lib

注意到,該目錄下有另外一個.lib文件,可以發現其名字後帶了個d,說明它是debug版本的,一般來說,我們不要將不同模式版本的同一個庫同時鏈接,因此就不填它。老版本的opencv有很多個.lib文件,添加的時候就很煩,因此我們用新版本也是有道理的。

到這裏,點”確定”,該屬性表就配置好了。想要試試看是否成功?那麼在這個工程的main.cpp中隨便寫點代碼吧:

#include <opencv2/opencv.hpp>
using namespace cv;

int main()
{
    Mat image;
    return 0;
}

注意,編譯的時候,vs上中部的調試器選擇,需要調爲release x64的,並且保證,”屬性管理器”在該模式下,包含了剛纔我們新建的屬性表。

此時運行是會報錯的,沒錯,就是缺少dll,這個時候我們可以通過添加系統變量的方法來做,但鑑於在(1)中談到的利弊,我們採取以下的方法:

點擊右方的”解決方案資源管理器”->右鍵項目->屬性->調試。雙擊”環境”,彈出對話框,輸入path=XXX/opencv/build/x64/vc14/bin/;

如配置系統環境一樣,path的值可以是多個路徑,使用英文冒號隔開。我們發現在該目錄下,就有運行所用的dll了。

點擊vs上方啓動調試按鈕,看到一個黑框一閃而過,其他什麼都沒有的話,那就大功告成了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章