一起做RGB D SLAM(3)BUG筆記

2021-10-25 05:58:52 字數 2342 閱讀 7536

跟做高博的《一起做rgb-d slam》系列時,出現了挺多bug的(主要因為自己還是個小白),在此記錄下解決過程。(ubuntu18.04,opencv3.4.9)

一起做rgb-d slam(3):

出現這個錯誤是因為nonfree模組在opencv3.0以上的release版本中被移除了,其中我們主要用到的sift演算法現在被放到了xfeacture模組裡,此時有兩條路可以走:

安裝contrib模組(擴充套件模組)——不穩定,不建議安裝:

這個可以參照ubuntu18.04安裝opencv4.0.0和opencv-contrib模組。

換用其他特徵提取匹配演算法(orb演算法):

可以先看看幾種演算法的差別:特徵檢測和特徵匹配方法,opencv 特徵點提取演算法 sift surf orb fast lbp學習(一),surf和sift演算法一樣都在擴充套件模組裡,用不了,綜合比較下還是選用orb好一點。

首先把src/detectfeatures.cpp裡的nonfree引用和初始化部分(下圖第

一、第二白框處的內容)刪去,然後將演算法改為orb即下圖第三白框處的內容改為:

_detector = cv::orb::

create()

;_descriptor = cv::orb::

create()

;

需要注意的是,這是opencv3.0以上版本的寫法,如果是2.**版本的話則改為:

orb特徵描述子是uchar型別,只能使用bruteforce匹配法。因此我們還要將flann匹配法改為bf(暴力)法,即將下圖白框處改為:

這裡出錯是因為沒有鏈結slambase的靜態庫檔案,在src/cmakelists.txt裡加上libslambase.a或slambase即可(如下圖)。

如果出現:

/usr/bin/ld: 找不到 -lslambase,

先看看主目錄下的cmakelists.txt裡,庫檔案的輸出目錄是否正確(如下圖)。

如果正確,則先把src/cmakelists.txt裡的detectfeatures部分注釋掉(如下圖)。

然後再編譯一遍,看看主目錄的lib資料夾裡是否有libslambase.a檔案,如果有的話再把剛才的注釋部分恢復,重新編譯下即可。

在主目錄裡執行bin/detectfeatures即可

這個錯誤是因為opencv3.0以上版本裡的solvepnpransac()函式引數有更改,把置信度改為0.99即可,詳情可以參考官方文件:camera calibration and 3d reconstruction。

把src/detectfeatures.cpp裡的:

cv::

solvepnpransac

( pts_obj, pts_img, cameramatrix, cv::

mat(

), rvec, tvec,

false

,100

,1.0

,100

, inliers )

;

改為:

cv::

solvepnpransac

(pts_obj, pts_img, cameramatrix, cv::

mat(

), rvec, tvec,

false

,100

,1.0

,0.99

, inliers)

;

重新編譯下,執行成功,奶斯!

一起做RGB D SLAM(4)BUG筆記

跟做高博的 一起做rgb d slam 系列時,出現了挺多bug的 主要因為自己還是個小白 在此記錄下解決過程。ubuntu18.04,opencv3.4.9 一起做rgb d slam 4 這個錯誤時因為cmakelists裡面沒有新增可執行二進位制檔案,在src cmakelists.txt檔案...

一起做RGB D SLAM(6)BUG筆記

跟做高博的 一起做rgb d slam 系列時,出現了挺多bug的 主要因為自己還是個小白 在此記錄下解決過程。ubuntu18.04,opencv3.4.9 一起做rgb d slam 6 在ubuntu18.04下安裝g2o還是挺容易的,先安裝依賴 sudo apt get install qt...

高博一起做RGBD SLAM

一起做rgb d slam 1 前言 一起做rgb d slam 2 點雲顯示 一起做rgb d slam 3 特徵提取與配準 一起做rgb d slam 4 點雲拼接 一起做rgb d slam 5 視覺里程計 一起做rgb d slam 6 圖優化工具g2o 一起做rgb d slam 7 回環...