摘要:本文背景,學習利用opencv庫打開dicom醫學影像文件。內容主要為,學習過程中對vs配置opencv和dcmtk環境做出總結。
附:
http://jingyan.baidu.com/article/75ab0bcbee4b47d6864db2fc.html ——百度經驗 VS2013配置opencv2.4.9
http://qimo601.iteye.com/blog/1685135 ——qimo601 博客 DCMTK3.6.1安裝說明
http://blog.csdn.net/m_buddy/article/details/51882584 ——m_buddy 博客 利用DCMTK讀取DCM圖像像素數據(快捷配置dcmtk)
在配置opencv環境時,最常見的步驟即為:1、安裝opencv庫至某一指定文件夾下 2、添加系統的環境變量 3、創建win32控制台工程 4、項目屬性中添加各種“目錄”和“依賴項” 5、利用程序測試。
而在配置dcmtk環境時,步驟為:1、安裝dcmtk庫至某一指定文件夾下 2、cmake編譯 3、VS編譯 4、創建win32控制台工程 5、項目屬性中添加各種“目錄”和“依賴項” 6、利用程序測試。
無論是opencv庫還是dcmtk庫,亦或是其他c++庫,實質上只是一個可添加的“函數包”——一個包含動態鏈接庫、頭文件和其他一些文件的文件夾。函數包中有着一整類的相關函數和類的定義,當配置環境成功后,便可以直接調用這些函數或者類。opencv庫一般是已經處理好的一個函數包,而對於dcmtk庫卻不是一個處理好的文件夾,所以需要經過預處理(即cmake和VS兩次編譯)得到最后的函數包。dcmtk的兩次編譯對於小白(比如我)不是一個簡單活,所以我從m_buddy的博客中直接下載了最終文件,用m_buddy的方法配置了該環境。對於函數包的存放位置並沒有固定要求,因為采用的是VS動態連接的方式,只要有意識的擺放在一個地方就好。
安裝完庫文件后,添加系統的環境變量,那么什么是系統的環境變量?
(環境變量——百度百科)
環境變量相當於給系統或用戶應用程序設置的一些參數,具體起什么作用這當然和具體的環境變量相關。比如path,是告訴系統,當要求系統運行一個程序而沒有告訴它程序所在的完整路徑時,系統除了在當前目錄下面尋找此程序外,還應到哪些目錄下去尋找;再如tc或vc++中,set include=path1;path2; 是告訴編譯程序到哪里去找.h類型的文件;當然不僅僅是指定什么路徑,還有其它的作用的。
在VS配置環境時,環境變量起的主要作用就是給一個路徑。如下圖:
截圖取自 項目-》屬性-》配置屬性-》VC++目錄-》可執行文件目錄 中的繼承的值
顯然在該目錄下,可以通過添加 “環境變量“名來替代具體的某個路徑,或路徑的前段部分。在本文所附的百度經驗中,雖然添加了環境變量,但添加目錄時卻沒有用到,該步驟是可以省略的。但在其他經驗博文中,有的是利用了環境變量的,此時便不可省略。
配置庫時,需要添加目錄和依賴項。常用的辦法是新建win32控制台,然后選擇 項目-》屬性-》配置屬性-》VC++目錄 在常規項里有如下目錄:
其中”可執行目錄“(bin文件夾)包含.exe文件、”包含目錄“(include文件夾)包含.h文件、"庫目錄"(lib文件夾)包含.lib文件。常用庫一般是添加該三類目錄即可,少部分可能添加其余目錄。除了目錄的路徑,還需要添加動態鏈接庫的文件名,重新選擇 配置屬性-》鏈接器-》輸入 其中有着”附加依賴項“,向里面添加”新添加的庫目錄”下的所有lib文件,分行寫。
(ps:為了庫的完整使用,lib文件要寫全,為了程序的運行成功,一定不能多寫莫須有的文件名,因為VS會逐個文件找尋,找到了才能繼續編譯)
至此算配置結束,最后編寫小程序嘗試調用庫內容,以確定配置成功。(教程中一般都會附上代碼,這里就不加了)
在win32控制台的項目屬性中配置成功,那么為什么在新建其他項目時也可以使用呢?
每個項目都有“項目屬性”這個菜單,除此,在 視圖-》屬性管理器 中我們可以看到 Debug|Win32 下有“Microsoft.Cpp.Win32.user”“Application”“Unicode Support”“Dynamic Link To MFC”共計四個基礎屬性表(MFC工程下),而“項目屬性”即是其中的“Microsoft.Cpp.Win32.user”屬性表,也是用戶自己的屬性設置表,我們創建的每一個工程項目都會包含這個屬性表,所以我們在新建win32控制台工程中的屬性設置,在之后新建的其他項目我們也是可以使用的。(Release|Win32下與Debug|Win32下的屬性表基本相同,除非用戶只針對其一進行設置和修改)
那如果我們新建其他工程並不需要此次的配置環境呢?
顯而易見的一種方式,通過“項目屬性”將目錄等均刪除即可。
每次均修改屬性表內容是件繁瑣事,因此,我們大可不必修改“Microsoft.Cpp.Win32.user”的屬性,而是在其中新建一個屬性表,命名后,右鍵”屬性“,接着和上文描述相同,添加目錄和依賴項即可。將屬性表保存在一個固定的位置,當新建其他項目時,可在”屬性管理器“中添加已有屬性表,這樣新建的工程便可以快速的配置上環境了。(屬性表可通過VS中屬性界面添加,亦可手動創建文件,書寫內容,后通過”添加已有屬性表“添加)
https://www.zhihu.com/question/24400428 知乎 關於永久配置opencv(其中有屬性表的寫法,若手動創建可參考)