Windows10+vs2013 編譯SiftGPU動態庫

參考博客:

http://www.itdaan.com/blog/2017/05/03/7a750043d825913166d53554ef40ec3a.html


SiftGPU使用的是wuchangchang版,穩定,精度高,匹配出的特徵點多

下載地址:

https://github.com/pitzer/SiftGPU


這裏我們插個嘴 關於glut glew區別

參考博客:https://www.cnblogs.com/gujianhan/p/3702050.html

GLEW是一個跨平臺的C++擴展庫,基於OpenGL圖形接口。使用OpenGL的朋友都知道,window目前只支持OpenGL1.1的涵數,但 OpenGL現在都發展到2.0以上了,要使用這些OpenGL的高級特性,就必須下載最新的擴展,另外,不同的顯卡公司,也會發布一些只有自家顯卡才支 持的擴展函數,你要想用這數涵數,不得不去尋找最新的glext.h,有了GLEW擴展庫,你就再也不用爲找不到函數的接口而煩惱,因爲GLEW能自動識 別你的平臺所支持的全部OpenGL高級擴展涵數。也就是說,只要包含一個glew.h頭文件,你就能使用gl,glu,glext,wgl,glx的全 部函數。GLEW支持目前流行的各種操作系統(including Windows, Linux, Mac OS X, FreeBSD, Irix, and Solaris)。

項目主頁: http://glew.sourceforge.net/ 
文檔地址: http://glew.sourceforge.net/install.html 
下載地址: https://sourceforge.net/project/downloading.php?group_id=67586&filename=glew-1.5.1-src.zip

glu是實用庫,包含有43個函數,函數名的前綴爲glu。Glu 爲了減輕繁重的編程工作,封裝了OpenGL函數,Glu函數通過調用核心庫的函數,爲開發者提供相對簡單的用法,實現一些較爲複雜的操作。
glaux是OpenGL輔助庫,包含有31個函數,函數名前綴爲aux。這部分函數提供窗口管理、輸入輸出處理以及繪製一些簡單三維物體。
glut是實用工具庫,基本上是用於做窗口界面的,並且是跨平臺(所以有時你喜歡做簡單的demo的話,可以光用glut就ok了)

GLX:OpenGL extension for X.

對於X窗口系統,它所使用的的OpenGL擴展(GLX)是作爲OpenGL的一個附件提供的,所有的GLX函數都使用前綴glX。

常見的OpenGL頭文件如下:(Windows系統中可以忽略大小寫的區別,我自己也沒太注意大小寫。同時,文件的路徑可能變化,例如不是<GL/gl.h>而是"gl.h",具體情況要看你到底把頭文件放到哪了)

<GL/gl.h>:OpenGL所使用的函數和常量聲明。

<GL/glu.h>:GLU(OpenGL實用庫)所使用的函數和常量聲明。GLU庫屬於OpenGL標準的一部分。(以下各種庫則不屬於)

<GL/glaux.h>:GLAUX(OpenGL輔助庫)所使用的函數和常量聲明。這個庫提供了創建窗口,處理鍵盤和鼠標事件,設置調色板等OpenGL本身不提供,但在編寫OpenGL程序時又經常用到的功能。目前這個庫已經過時,只有比較少的編譯環境中有提供,例如VC系列。在VC系列編譯器中,使用這個頭文件之前必須使用#include <windows.h>或者具有類似功能的頭文件。

<GL/glut.h>:GLUT(OpenGL實用工具包)所使用的函數和常量聲明。這個庫的功能大致與GLAUX類似,目前許多OpenGL教程使用這個庫來編寫演示程序。一些編譯系統可能不直接提供這個庫(例如VC系列),需要單獨下載安裝。這個頭文件自動包含了<GL/gl.h>和<GL/glu.h>,編程時不必再次包含它們。

<GL/glext.h>:擴展頭文件。因爲微軟公司對OpenGL的支持不太積極,VC系列編譯器雖然有<GL/gl.h>這個頭文件,但是裏面只有OpenGL 1.1版本中所規定的內容,而沒有OpenGL 1.2及其以後版本。對當前的計算機配置而言,幾乎都支持OpenGL 1.4版本,更高的則到1.5, 2.0, 2.1,而VC無法直接使用這些功能。爲了解決這一問題,就有了<GL/glext.h>頭文件。這個頭文件提供了高版本OpenGL所需要的各種常數聲明以及函數指針聲明。

<GL/wglext.h>:擴展頭文件。與<GL/glext.h>類似,但這個頭文件中只提供適用於Windows系統的各種OpenGL擴展所使用的函數和常量,不適用於其它操作系統。

"glee.h":GLEE開源庫的頭文件。它的出現是因爲<GL/glext.h>雖然可以使用高版本的OpenGL函數,但是使用的形式不太方便。GLEE庫則讓高版本的OpenGL函數與其它OpenGL函數在使用上同樣方便。需要注意的是,這個頭文件與<GL/gl.h>是衝突的,在包含"glee.h"之前,不應該包含<GL/gl.h>。
#include <GL/glut.h>
#include "glee.h"   // 錯誤,因爲glut.h中含有gl.h,它與glee.h衝突
                    // 但是如果把兩個include順序交換,則正確
"glos.h":雖然這個也時常見到,但我也不知道它到底是什麼,可能是與系統相關的各種功能,也可能只是自己編寫的一個文件。我曾經看到一個glos.h頭文件中只有一句#include <GL/glut.h>。


假設已經安裝好cuda開發環境,我是用的是cuda v9.0

同時需要下載the OpenGL Extension wrangle library(glew)支撐庫,

網址爲:https://sourceforge.net/projects/glew/files/glew/

還需要下載glut支撐庫,the OpenGL Utility Toolkit,網址爲:https://www.opengl.org/resources/libraries/glut/glut_downloads.php


編譯glew x64

下載以後解壓

使用VS2013 打開 sln工程文件

把32位和64位都生成一遍

其中glewinfo 和 visualinfo 是測試程序,我們不需要

glew_shared生成的是動態庫

glew_static生成的是靜態庫

把x64位的 Release 和 Debug的靜態庫整理下:

 Debug的64位靜態庫

Release的64位靜態庫

頭文件

末尾帶s或直接標明static爲靜態版本


這裏全部截圖太墨跡了,我直接把我編譯好的64位靜態庫動態庫上傳:

有需要的小夥伴在我的下載資源找一下

接着我們下載glut

如果你想使用直接編譯好的下載這個:

裏面有32位和64位 

如果想使用window VS編譯的版本

網址:

https://user.xmission.com/~nate/glut.html

這個打開後會有 sln的VS工程文件:


glut默認只給了動態庫的版本,如果我們想要靜態庫還要改,偷懶了,只生成動態庫吧

我們選擇x64位的Debug和Release 分別生成

取出我們需要的: 

然後和glew一樣,別忘了把頭文件取出:

老規矩,重新放到一個目錄下,然後想glew一樣,把debug的後面加上d,以示區分

爲了讓大家看的更明白

我們使用cmd的命令生成樹狀圖

tree /f > tree.txt

還有一個圖像處理庫DevIL

這裏我並沒有編譯,網上有他的64位Release版本

我也會上傳到我的資源

DevIl Image library圖像庫

https://github.com/DentonW/DevIL

這個庫需要:

Could NOT find ZLIB (missing: ZLIB_LIBRARY ZLIB_INCLUDE_DIR)

Could NOT find PNG (missing: PNG_LIBRARY PNG_PNG_INCLUDE_DIR)

Could NOT find TIFF (missing: TIFF_LIBRARY TIFF_INCLUDE_DIR)

Could NOT find JPEG (missing: JPEG_LIBRARY JPEG_INCLUDE_DIR)

Could NOT find JPEG (missing: JPEG_LIBRARY JPEG_INCLUDE_DIR)

Could NOT find Jasper (missing: JASPER_LIBRARIES JASPER_INCLUDE_DIR JPEG_LIBRARIES)

Could not find libSquish

Could NOT find LCMS2 (missing: LCMS2_LIBRARY LCMS2_INCLUDE_DIR)

如果一個一個編譯的話,參考博文:

https://blog.csdn.net/github_35160620/article/details/60267890

等等,發現了新大陸

我找到了作者編譯好的

https://sourceforge.net/projects/openil/files/

 

下載完成後,解壓,進入SiftGPU\msvc\目錄,用vs2015打開siftGPU.sln(編譯openGL版本動態庫),或者打開SiftGPU_CUDA_Enabled.sln(編譯CUDA版本的動態庫)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章