編譯安裝並單步調試OpenCV擴展模塊

不斷更新的OpenCV視覺庫,包含了大量較新的計算機視覺方面的研究成果,很多新的算法都放在了OpenCV_contrib,即擴展模塊。這些新算法使用了OpenCV的數據結構或其它算法來做支撐,很多並不能單獨分離直接使用,這時候我們就需要編譯OpenCV和擴展模塊。

這篇博客總結了如何編譯安裝擴展模塊,並且進行單步調試OpenCV源碼的方法。

擴展模塊下載:https://github.com/opencv/opencv_contrib

工具:Cmake+Visual Studio

1. 選擇源碼路徑和build路徑,如下圖

爲了方便管理,這裏build路徑最好給出明確的名字。

2. 點擊Configure,填寫擴展模塊module路徑

找到OPENCV分組下的OPENCV_EXTRA_MODULE_PATH,填寫路徑爲擴展模塊下modules文件夾,如下圖:

擴展模塊路徑
這裏有兩點需要注意:

第一:修改安裝路徑,找到CMAKE_INSTALL_PREFIX是後續安裝的路徑,可以按自己喜歡修改。

第二:這時候最好去掉BUILD_EXAMPLES,BUILD_PERF_TEST,BUILD_TEST。對於後續使用opencv,完全沒有影響,還可以減少編譯項,加快後面編譯的速度。

3. 設置路徑,再次Configure

這一步很關鍵,確保擴展模塊的安裝正確前提是各種目錄在這一步配置好。

這裏的路徑是指:你需要安裝的模塊的第三方庫。比如Viz模塊依賴VTK,SFM模塊依賴ceres,這些依賴庫是需要提前編譯安裝好的。在cmake路徑中搜索對應依賴庫的名字,找到對應的項。一般來說需要設置路徑的有三種:

xx_DIR: 這裏路徑填寫爲能夠找到依賴庫的xxConfig.cmake文件,如果填寫錯誤,cmake的錯誤輸出也會提示無法找到xx對應cmake文件

xx_INCLUDE_DIR: 依賴庫頭文件所在目錄

xx_LIBRARIES: 依賴庫的lib文件,手選

如果填寫的路徑正確,那麼點擊Configure成功後,查看輸出信息,如下圖。To be built中會有對應的模塊名字,這樣就算路徑配置成功了

注:configure這一步,cmake會下載一些文件,可能會因爲網絡導致文件下載失敗(有條件掛上VPN比較好)。遇到這種情況,如果是某個模塊部分文件下載失敗,不會影響Configure和Generate,具體問題可以再具體解決,比如xfeature模塊中文件下載失敗,可以後續補上具體文件。

4. Generate

點擊生成即可,Configure沒問題,這一步也會沒問題。

5. Visual Studio編譯安裝(Debug和Release都做一次)

找到之前制定的build文件夾,打開OpenCV.sln,右擊解決方案->生成ALL_BUILD。接下來就是等待編譯完成。

潛在問題:因爲每個模塊可能依賴於其它模塊生成的lib,有可能前一模塊還沒完成,後一模塊就在編譯。這種情況時,查看輸出,找到缺少的lib對應項目,單獨生成一下,再開始ALL_BUILD就會沒問題。(原因考慮是VS對於多項目的編譯方式造成,不同項目都遇到了,但是沒有深究,以上方法就解決了問題)

上述完成後,找到INSTALL項目,生成INSTALL,就可以安裝在之前制定的文件夾中。

6. 使用時的配置

新建一個項目時,需要配置一下幾項:

  1. 附加包含目錄:項目屬性->C/C+±>常規->附加包含目錄,填寫安裝目錄下的include路徑。
  2. 附加庫目錄:項目屬性->鏈接器->常規->附加包含目錄,填寫安裝目錄下的lib路徑。
  3. 可執行文件目錄:項目屬性->VC++目錄->可執行文件目錄,填寫安裝目錄下bin。

*7. 單步調試源碼

如果想在使用時,使用單步調試加入相應模塊的源碼,則需要再添加一個目錄:

可執行文件目錄:項目屬性->VC++目錄->可執行文件目錄,填寫build文件夾下…\bin\Debug路徑。注意這裏和第六步中不同,因爲這個文件夾下含有pbd文件,可以讓我們進行單步調試,更好地幫助我們學習源代碼的執行過程與算法原理

同時Release文件夾下也有pbd文件,一般來說Release模式下不能調試,這裏留個問題,等我找到答案,再來解釋。

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