跟做高博的《一起做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 回環...