首頁>技術>

SIFT即尺度不變特徵變換,是用於影象處理領域的一種描述。這種描述具有尺度不變性,可在影象中檢測出關鍵點,是一種區域性特徵描述子。SIFT的尺度不變特徵變換在影象特徵點匹配中十分關鍵,因為我們從不同角度拍攝一個物體,物體的尺寸多少都會發生變化。但是在正常情況下我們連結的opencv庫裡面並沒有包含這個演算法,需要我們主動重新配置一遍。使用環境:Ubuntu16_Qt_C++_opencv3.2.0_opencvcontrib3.2.01.解除安裝之前make配置的opencv rm -rf /usr/local/usr/local為之前make檔案的預設路徑,如果之前有設定為其它路徑,則解除安裝相對應的路徑下的資料夾2.在官網下載opencv和opencv_contrib並解壓,注意兩者要同一個版本。筆者使用的版本時3.2.0。筆者在嘗試了許多不同版本後,發現3.4以上的版本似乎因為版權原因,在最後成功make並在.pro檔案連結上後,雖然能inculde <xfeature2d.hpp>,並且在使用SIFT類使能夠自動補全,但是在執行時還是會報錯。報錯的具體內容如下:The function/feature is not implemented) This algorithm is patented and is excluded in this configuration; Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library in function ‘cv::xfeatures2d::SIFT::create’。然後根據其提示,筆者也發現即使CMake時勾選上OPNECV_ENABLE_NONFREE,也還是會報同樣的錯。最後才發現原來是版本的問題,在選擇3.4以前的版本似乎就不會出現這個報錯。筆者推測應該是opencv開發人員在更新3.4的版本上在nonfree.hpp加入了一點內容,即如果判斷沒有版權,則輸出這段報錯內容,可能可以透過修改一下這個標頭檔案來實現在3.4以上的版本使用SIFT等演算法。3.解壓完畢之後,首先是下載一些依賴包,不過在之前配置opencv的時候已經下載過了,所以直接跳過,然後就是透過cmake-gui介面進行makemkdir build //在opencv3.4的資料夾下新建一個build資料夾cd buildcmake-gui .. //開啟cmake-gui圖形介面source的路徑為你的opencv資料夾的路徑,build即你新建的build資料夾的路徑,填寫好後configure,configure介面的選項按預設的來即可

configure之後再新增OPENCV_EXTRA_MOUDULES_PATH的路徑,即為你下載的opencv_contrib資料夾裡面的moudules資料夾

CMAKE_BUILD_TYPE裡面填RELEASE

翻譯過來就是缺少***.i檔案,解決方案就是手動將該檔案下載,然後放到這個路徑下,然後重新輸入make命令即可。具體的.i檔案下載需要特殊的方法,可以直接用我已經下載的現成的( ̄▽ ̄)"連結:https://pan.baidu.com/s/11qltgnkuElInOKGVOr0SAg提取碼:stw1複製這段內容後開啟百度網盤手機App,操作更方便哦! 另一種型別的報錯就是缺少.hpp檔案啦,這種錯誤中缺失的.hpp檔案我們可以在本地的硬盤裡面找到,然後手動複製貼上這個.hpp檔案。但這裡比較特殊,需要在上一級目錄即detail資料夾下,新建opencv2資料夾,然後再在opencv2資料夾裡新建xfeatures2d資料夾,最後在xfeatures2d資料夾下貼上cuda.hpp,然後重新輸入make命令即可(哈哈,是不是很奇怪,但好像就是這樣才行,不要問我是怎麼知道的≡(▔﹏▔)≡)

解決了上面兩種報錯的型別,基本上就可以make成功了4.make成功後你可以在/usr/local目錄下看到成功下載的檔案,然後就是在Qt連結你成功下載的檔案啦。具體就是新建專案,在.pro檔案最後新增如下文字INCLUDEPATH += /usr/local/include \ /usr/local/include/opencv \ /usr/local/include/opencv2LIBS += /usr/local/lib/lib*5.然後就可以使用SIFT等類啦┗|`O′|┛ 嗷~~

12
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • js 分享倒計時計算方法