VLFeat開源庫介紹及在VS2013中的編譯

ZDKAlt 8年前發布 | 45K 次閱讀 圖形/圖像處理

來自: http://blog.csdn.net/fengbingchun/article/details/50638391


VLFeat是一個開源的計算機視覺算法庫,內容主要包括feature detectors、feature extractors、k-means clustering、randomized kd-tree matching、super-pixelization。它是跨平臺的,能夠應用在Linux、Mac、Windows平臺。它的License是BSD。

  在VS2013中編譯VLFeat源碼操作步驟:

1.      從http://www.vlfeat.org/ 下載源碼(或從https://github.com/vlfeat/vlfeat下載),最新版本為0.9.20;

2.      打開VS2013 x64本機工具命令提示,在命令行中輸入:$ nmake version,如下圖:


3.      在make/nmake_helper.mak文件中加入vs2013參數,如下圖:


4.      將VS2013 x64本機工具命令提示定位到/vlfeat-0.9.20目錄下,輸入:

$ nmake /f Makefile.mak

5.      運行完上面的語句后,將會在/vlfeat-0.9.20/bin目錄下,新增一個win64目錄,里面會有生成的vl.dll、vl.lib和一些test執行文件;

6.      按照上面的步驟雖然生成了vlfeat動態庫,但是不便于調試,下面新建一個控制臺工程VLFeat_DLL,將/vlfeat-0.9.20/vl目錄中的文件加入到VLFeat_DLL工程中;

7.      將VLFeat_DLL工程,配置屬性中的配置類型由應用程序(.exe)改為動態庫(.dll);字符集由使用Unicode字符集改為使用多字節字符集;

8.      遇到的問題及處理方法:

(1)、error C2491,不允許dllimport函數的定義:將宏VL_BUILD_DLL加入到預處理器定義中;

(2)、error C4996:將宏_CRT_SECURE_NO_WARNINGS加入到預處理器定義中;

(3)、三個類似的錯誤,fatal error C1189: #error : "Compiling with SSE2 enabled, …”:分別將三個宏 __SSE2__、_SSE2_、__AVX__加入到預處理器定義中;

(4)、六個類似的錯誤,error C4146 一元負運算符應用于無符號類型,結果仍為無符號類型:將C/C++--> 常規--> SDL檢查改為否(/sdl-)。

9.      重新編譯整個工程即可生成VLFeat_DLL.dll;

10.    驗證VLFeat_DLL.dll動態庫的正確性:新添加一個Test_VLFeat控制臺工程,測試代碼及結果圖如下:

#include <iostream>
#include <generic.h>

int main()
{
    VL_PRINT("Hello world!\n");

    std::cout << "ok!" << std::endl;
    return 0;
}

工程代碼:https://github.com/fengbingchun/VLFeat-VS2013 

 本文由用戶 ZDKAlt 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!