最近學校布置了一個關於圖像融合的作業,於是想利用Learn OpenCV 網站上的Face Morph 教程來設計一個人臉融合的Gif圖,但是程序中需要用到DLib庫,光是配置這個庫就花費了我半天的時間,網絡上的教程太多了,有一些並不一定適用。
我嘗試了很多種辦法,出現過各種各樣的bug,走了許多彎路(比如說加上DLib庫之后OpenCV的imread函數讀不到圖像數據,網絡上說的解決方法是檢查附加依賴項是否release使用了帶d的lib,而debug使用了不帶d的lib,但是我檢查之后發現並沒有錯,所以最后一直沒解決這個問題,又重新上網找其他配置方法),直到最后我選擇了 DLib官網 提供的安裝方法(全是英文,翻譯了好久),才成功了。果然官方給的方法才是最實用的。
一、安裝CMake
官網提供的方法是使用CMake生成庫,首先我們的電腦上需要安裝CMake,前往 CMake官網下載地址 下載,我使用的版本是3.14.2,選擇msi格式的安裝包(之所以選擇msi格式是因為msi可以方便地添加環境變量到系統),根據自己電腦的處理器選擇x64還是x86的安裝包,我的電腦是x64處理器,所以我選擇了紅框框出來的安裝包。
安裝包下載完成之后,雙擊文件運行,點擊next
勾選agreement,點擊next
選擇“Add CMake to the system PATH for all user”和“Create CMake Desktop Icon”,點擊next
選擇生成的路徑,點擊next
點擊“Install”
安裝完成
之后檢查一下系統的環境變量中是否有添加CMake的bin路徑。
右鍵點擊桌面上“我的電腦” --> 彈出界面左欄中的“高級系統設置”
--> 選擇“環境變量” --> 點擊“系統變量”組框下的“Path”,點擊“編輯”按鈕
--> 彈出的窗口中檢查是否有CMake/bin一欄,沒有的話,點擊“編輯”按鈕自己手動添加
二、下載DLib
安裝完CMake之后,前往 DLib官網files 下載DLib庫,選擇 dlib-19.17.zip ,下載到本地(我選擇的是D盤),下載完成后解壓,得到一個文件夾,文件夾中有如下文件
三、使用cmd命令讓CMake編譯Dlib庫
使用WIN+R組合鍵調出“運行”界面,輸入“cmd”調出命令行窗口
在命令行窗口,首先輸入D:轉到D盤下的目錄(博主的DLib解壓到了D盤),(tip:此時輸入dir命令可以顯示目錄下的全部文件名,文件名輸入一部分時可以按下“Tab”鍵可以自動補全),然后輸入cd DLib跳轉到DLib文件夾,繼續輸入cd dlib-19.17跳轉到庫目錄下(還有一種方法是直接在庫目錄下使用shift+鼠標右鍵直接開啟該目錄下的命令行窗口,博主沒有用過,你們可以試一下)
來到該目錄下之后,就可以使用官方的方法編譯DLib庫啦
這里解釋一下,第一行cd examples 是跳轉到DLib庫下的examples文件夾,該文件夾下有一個名為“CMakeLists.txt”的文件,里面有DLib的配置方案,反正按官方說的做就對了;第二行mkdir build 是生成一個名為build的文件夾,到時候CMake編譯時生成的文件都會放在這里面,包括生成的庫。第三行cd build 跳轉到build文件夾下。當使用第四行命令cmake .. 就是CMake的編譯命令,運行到這里時,若出現不是內部的命令,則需要把安裝的Cmake的bin目錄添加到環境變量PATH里,具體方法上面有。cmake .. 這兩個點表示上一級文件夾,也就是examps文件夾,意思應該是讓CMake去尋找“CMakeLists.txt”的文件。此安裝默認生成32位的可執行文件,要想生成64位的,需要將cmake.. 命令替換為 cmake -G "Visual Studio 15 2017 Win64" -T host=x64 ..(最后兩個點不要漏了)。第五行cmake --build . --config Release ,--build 是開始編譯命令,. 一個點表示當前目錄,即生成文件存放在當前目錄下,--config Release 這里需要注意啦,如果寫Release 最終將生成Release庫,所以說如果你想生成一個Debug庫的話,就需要改成--config Debug。
(博主已經生成過Release庫,所以這次演示生成Debug庫,生成目錄名為buildDebug)
輸入cmake -G "Visual Studio 15 2017 Win64" -T host=x64 ..
執行完成
輸入cmake --build . --config Debug
執行的時間比較漫長,建議先去喝杯茶干點別的事,中間會出現一些warning沒有關系,無視就行
Cmake執行結束
此時“D:\DLib\dlib-19.17\examples\buildDebug\dlib_build\Debug“” 文件夾下就會有編譯好的庫存在(注意:是dlib_build下的Debug文件夾)
將生成的庫拷貝,放置到D:\DLib\Library\Debug\下,方便查找和添加
配置VS2017環境
打開VS2017,新建一個工程,選擇工程的“屬性管理器”(如果沒有這一欄,可以點擊“視圖”-->“其他窗口”-->“屬性管理器”)
(我這里已經把OpenCV的屬性表加進去了)右鍵點擊“Debug | x64”,在彈出的菜單下選擇“添加新項目屬性表”,彈出的窗口中將屬性表命名為“DLib_x64_debug”,修改保持位置為“D:\DLib\Library\Debug\”(以后新建DLib的工程只要Add這個屬性表就行了)
然后右鍵點擊DLib_x64_debug屬性表,在彈出的菜單中選擇“屬性”
首先在“VC++目錄”下編輯包含目錄,添加“D:\DLib\dlib-19.17”,點擊“確定”
在庫目錄下添加“D:\DLib\Library\Debug”,即dlib19.17.0_debug_64bit_msvc1916.lib所在的目錄,點擊“確定”
然后在“鏈接器”-->“輸入”的“附加依賴項”中添加“dlib19.17.0_debug_64bit_msvc1916.lib”,點擊“確定”
最后在“C/C++”-->“預編譯器”中的“預處理器定義”中添加
DLIB_SUPPORT_JEPG
DLIB_SUPPORT_PNG
(注意:這里如果不添加這兩個預編譯指令的話,dlib::load_image函數就無法讀取 .jpg .png格式的圖像,程序會崩潰)
到此,環境已經配置完成。
這是我第一次寫博客,費了挺多時間的,有什么錯誤或者漏缺還請多多指教。O(∩_∩)O哈哈~
過幾天我還會寫一個使用OpenCV和DLib編寫FaceWorph人臉融合程序的教程,敬請期待哦!
參考文章
https://blog.csdn.net/qq583083658/article/details/79917066