首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

經典算法研究:SIFT算法編譯與實現完整指南(基於Rob Hess庫)

     編輯:關於C語言

作者:July | 日期:2011年3月1日

前言

昨日下載了Rob Hess維護的SIFT庫,瀏覽源碼後嘗試編譯,卻遇到不少棘手問題。經過代碼修改、下載OpenCV與GSL庫,歷經多次嘗試終於編譯成功。為了給有興趣實現SIFT算法的開發者提供參考,特整理此文記錄完整編譯流程。若需了解SIFT算法原理,請參考前文《圖像特徵提取與匹配之SIFT算法》。

編譯效果展示

以下為SIFT源碼庫編譯成功後的運行效果圖:

環境準備與依賴下載

1. 獲取Rob Hess SIFT庫

下載地址:https://blogs.oregonstate.edu/hess/code/sift/

直接解壓編譯會報錯:error C1083: Cannot open include file: cxcore.h,原因是缺少OpenCV頭文件。

2. 安裝OpenCV 1.0(VC6.0環境必須)

根據網友反饋,VC6.0下暫無OpenCV 2.0成功案例,建議使用1.0版本。

  • 下載:OpenCV 1.0
  • 安裝路徑假設為 C:\Program Files\OpenCV
  • 安裝時勾選「將OpenCV\bin加入系統變量」

3. 配置VC6.0開發環境

全局目錄設置

選單 Tools → Options → Directories:

  • Library files:C:\Program Files\OpenCV\lib
  • Include files(依次添加):
    • C:\Program Files\OpenCV\cxcore\include
    • C:\Program Files\OpenCV\cv\include
    • C:\Program Files\OpenCV\cvaux\include
    • C:\Program Files\OpenCV\ml\include
    • C:\Program Files\OpenCV\otherlibs\highgui
    • C:\Program Files\OpenCV\otherlibs\cvcam\include
  • Source files(依次添加):
    • C:\Program Files\OpenCV\cv\src
    • C:\Program Files\OpenCV\cxcore\src
    • C:\Program Files\OpenCV\cvaux\src
    • C:\Program Files\OpenCV\otherlibs\highgui
    • C:\Program Files\OpenCV\otherlibs\cvcam\src\windows

專案鏈接庫設置

選單 Project → Settings → Link,Object/library modules 添加:

cxcore.lib cv.lib ml.lib cvaux.lib highgui.lib cvcam.lib

可按需精簡,僅保留必要庫文件。

4. 安裝與配置GSL庫

  • 下載:GSL 1.8
  • 將 C:\WinGsl\bin 下的 WinGsl.dll 和 WinGslD.dll 複製到 C:\VC6.0\Bin
  • 整個 Gsl 目錄複製到 C:\VC6.0\Bin
  • lib 目錄下所有 .lib 文件複製到 C:\VC6.0\Lib
  • 在 Tools → Options → Directories 中添加GSL的include與lib路徑

常見錯誤排查

問題一:找不到 cxcore100.dll

手動將 C:\Program Files\OpenCV\bin 添加至系統環境變量 PATH,完成後需重啟電腦。

問題二:LINK : fatal error LNK1104: cannot open file "odbccp32.libcxcore.lib"

專案設置中庫文件名稱間缺少空格分隔,應為 odbccp32.lib cxcore.lib。修改後記得保存專案。

結語

完成上述步驟後若仍無法編譯,可能需微調Rob Hess源碼。日後有機會再深入剖析SIFT源碼實現細節。祝各位編譯順利!

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved