Dlib19.7編譯方法_Part1.五個步驟成功Compile Dlib_執行程式
這次要來介紹到
Dlib這套工具的使用
準備工具:
1. Dlib
http://dlib.net
2. Cmake3.8 x64版
https://cmake.org/download/
https://cmake.org/files/
1. Dlib
最新已經釋出至19.7版本
http://dlib.net/release_notes.html
Dlib當你完成下載完之後
解壓縮
配置路徑
C:\dlib-19.7
2. Cmake3.8 x64版 (建議下載之後存放路徑用指令編譯)
接著輸入指令(依照官網英文教程:http://dlib.net/compile.html)
用系統管理員身分執行開啟 小CMD視窗後
到Dlib該目錄下方
建立一個空目錄名為build
cd C:\dlib-19.7
mkdir build
cd build
cmake -G "Visual Studio 14 2015 Win64" ..
cmake --build . --config Release
建置好後心情就還真是不錯 GUI之前一直遇到怪異問題 = =|||
===================================================================
緊接著建新專案
試著Run程式
===================================================================
配置
Step1. VC++ Include Dependencies
增加 C:\dlib-19.7
Step2.
Linker --> General --> Additional Library Directories:
輸入
C:\dlib-19.7\dlib\
C:\dlib-19.7\dlib\external
Linker --> 輸入 --> Additional Dependencies :
輸入
C:\dlib-19.7\build\dlib\Release\dlib.lib
Step3.
C/C++ ---> General ---> Additional Include Directories:
輸入
C:\dlib-19.7\dlib\external\zlib
C:\dlib-19.7\dlib\external\libpng
C:\dlib-19.7\dlib\external\libjpeg
C:\dlib-19.7\dlib\external\cblas
選 NO SDL
C/C++ ---> Preprocessor ---> Preprocessor Definitions:
輸入
DLIB_JPEG_SUPPORT.....1
DLIB_PNG_SUPPORT.....2
DLIB_HAVE_AVX.....3
為了開啟 jpg圖檔還需加入....1
P為了開啟 NG圖檔.........2
為了加速處理加入.......3
Step4.
請加入dlib\external 下方目錄中的所有開圖檔程式原碼檔案
加入如下所列出的目錄下的 .h檔 .c檔案 .cpp檔
dlib\external\libjpeg
dlib\external\libpng
dlib\external\zlib
Step5. 進行 Fatal Error LNK 1169錯誤修正
如果直接運行會出錯
fatal error LNK1169: one or more multiply defined symbols found
錯誤原因在於剛加入至 Resource母錄下的可能有重複程式檔案名
因此
再到連結器屬性頁
可參考至MSDN 及相關Blog說明
https://msdn.microsoft.com/zh-tw/library/024awkd1.aspx
https://msdn.microsoft.com/zh-tw/library/70abkas3.aspx
http://blog.csdn.net/xcntime/article/details/4122982
=======================================================================
上面五個步驟配置流程完成了後
就可以自己寫Code或者運行dlib自帶的examples程式了。
但是官方自帶的程序都是命令行運行的
因此若要在Visual Studio中運行則需要稍作修改
把命令行參數修改為具體的文件名或者路徑。
如下參照範例先自寫一個人臉偵測例子
第 27行 argv[1]需再額外設置圖檔路徑名字串
我取這張圖當作輸入
截自 Youtube: [Official Video] Daft Punk - Pentatonix
https://www.youtube.com/watch?v=3MteSlpxCpo&list=PLcOD6drVLxLOEpGnXRPrlLwCQco32qNhY&index=15
由於存出來之圖檔為 PNG 請先回至剛才地方多配置
int main(int argc, char **argv)
主要於平常我們會直接寫成
int main()
其實第一句是UNIX /Linux 中標準main函數命令列參數個數喔~~~
第一個int argc 是用來統計程式執行時發送給main函數之命令參數個數
(預設為1)
第二個 char **argv 或也有人寫 char *argv[]
為字串陣列
每一個當中元素各自指向一個特定含意的參數
argv[0] ---> 程式運行之路徑全名
argv[1] ---> 於DOS命令列中執行程式名的第一個字串
argv[2] ---> 於DOS命令列中執行程式名的第二個字串
argv[3] ---> 於DOS命令列中執行程式名的第三個字串
argv[argc] -----> NULL
這裡在執行之前請在注意
運行後結果
==================================================================
參考資源:
Dlib + VS2013 人脸检测,无需CMAKE
http://blog.csdn.net/shuzfan/article/details/52149882
[随感]fatal error LNK1169: one or more multiply defined symbols found终极解决
http://blog.csdn.net/xcntime/article/details/4122982
/FORCE (強制檔案輸出)
https://msdn.microsoft.com/zh-tw/library/70abkas3.aspx
連結器屬性頁
https://msdn.microsoft.com/zh-tw/library/024awkd1.aspx
“error LNK2001: unresolved external symbol”
https://stackoverflow.com/questions/6598181/error-lnk2001-unresolved-external-symbol
How to fix?: error LNK2001: unresolved external symbol "extern "C" ........
https://social.msdn.microsoft.com/Forums/vstudio/en-US/4523e57a-c16b-4378-8c42-52f7cf5b98da/how-to-fix-error-lnk2001-unresolved-external-symbol-extern-c-?forum=vclanguage
[转载](转)error LNK2001原因总汇
http://blog.sciencenet.cn/blog-836964-693144.html
Dlib在Visual Studio 2015上的編譯和配置(超簡單版)
http://blog.csdn.net/xingchenbingbuyu/article/details/53236541
Dlib 19.2+VS2015 人脸检测(非CMake)
http://blog.csdn.net/qq_22764813/article/details/53053232
Dlib這套工具的使用
準備工具:
1. Dlib
http://dlib.net
2. Cmake3.8 x64版
https://cmake.org/download/
https://cmake.org/files/
1. Dlib
最新已經釋出至19.7版本
http://dlib.net/release_notes.html
Dlib當你完成下載完之後
解壓縮
配置路徑
C:\dlib-19.7
2. Cmake3.8 x64版 (建議下載之後存放路徑用指令編譯)
接著輸入指令(依照官網英文教程:http://dlib.net/compile.html)
用系統管理員身分執行開啟 小CMD視窗後
到Dlib該目錄下方
建立一個空目錄名為build
cd C:\dlib-19.7
mkdir build
cd build
cmake -G "Visual Studio 14 2015 Win64" ..
cmake --build . --config Release
建置好後心情就還真是不錯 GUI之前一直遇到怪異問題 = =|||
===================================================================
緊接著建新專案
試著Run程式
===================================================================
配置
Step1. VC++ Include Dependencies
增加 C:\dlib-19.7
Step2.
Linker --> General --> Additional Library Directories:
輸入
C:\dlib-19.7\dlib\
C:\dlib-19.7\dlib\external
Linker --> 輸入 --> Additional Dependencies :
輸入
C:\dlib-19.7\build\dlib\Release\dlib.lib
Step3.
C/C++ ---> General ---> Additional Include Directories:
輸入
C:\dlib-19.7\dlib\external\zlib
C:\dlib-19.7\dlib\external\libpng
C:\dlib-19.7\dlib\external\libjpeg
C:\dlib-19.7\dlib\external\cblas
選 NO SDL
C/C++ ---> Preprocessor ---> Preprocessor Definitions:
輸入
DLIB_JPEG_SUPPORT.....1
DLIB_PNG_SUPPORT.....2
DLIB_HAVE_AVX.....3
為了開啟 jpg圖檔還需加入....1
P為了開啟 NG圖檔.........2
為了加速處理加入.......3
Step4.
請加入dlib\external 下方目錄中的所有開圖檔程式原碼檔案
加入如下所列出的目錄下的 .h檔 .c檔案 .cpp檔
dlib\external\libjpeg
dlib\external\libpng
dlib\external\zlib
Step5. 進行 Fatal Error LNK 1169錯誤修正
如果直接運行會出錯
fatal error LNK1169: one or more multiply defined symbols found
錯誤原因在於剛加入至 Resource母錄下的可能有重複程式檔案名
因此
再到連結器屬性頁
可參考至MSDN 及相關Blog說明
https://msdn.microsoft.com/zh-tw/library/024awkd1.aspx
https://msdn.microsoft.com/zh-tw/library/70abkas3.aspx
http://blog.csdn.net/xcntime/article/details/4122982
=======================================================================
上面五個步驟配置流程完成了後
就可以自己寫Code或者運行dlib自帶的examples程式了。
但是官方自帶的程序都是命令行運行的
因此若要在Visual Studio中運行則需要稍作修改
把命令行參數修改為具體的文件名或者路徑。
如下參照範例先自寫一個人臉偵測例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | #include<dlib/image_processing/frontal_face_detector.h> #include<dlib\image_processing\render_face_detections.h> #include<dlib\image_processing.h> #include<dlib\gui_widgets.h> #include<dlib\image_io.h> #include<iostream> #include<vector> //#define DDLIB_JPEG_SUPPORT //#define DLIB_PNG_SUPPORT using namespace dlib; using namespace std; int main(int argc, char **argv) { try { frontal_face_detector detector = get_frontal_face_detector(); image_window win;//顯示窗口物件 array2d<unsigned char> img; cout << "processing image" << argv[1] << endl; load_image(img, argv[1]);//載入一張圖 pyramid_up(img);//對影像進行採樣並偵測更小人臉部分 //開始偵測,回傳一邊框序列 std::vector<rectangle> dets = detector(img);//detector()回傳一系列邊界盒子 cout << "Number of faces detected:" << dets.size() << endl;//在原始影像上顯示運算结果 win.clear_overlay(); win.set_image(img); win.add_overlay(dets, rgb_pixel(255, 0, 0));//紅色像素通道進行偵測邊框填充 cout << "Hit enter to process the next image..." << endl; cin.get(); } catch (const std::exception& e) { cout << "\nexception thrown!" << endl; cout << e.what() << endl; } getchar(); } |
第 27行 argv[1]需再額外設置圖檔路徑名字串
我取這張圖當作輸入
截自 Youtube: [Official Video] Daft Punk - Pentatonix
https://www.youtube.com/watch?v=3MteSlpxCpo&list=PLcOD6drVLxLOEpGnXRPrlLwCQco32qNhY&index=15
由於存出來之圖檔為 PNG 請先回至剛才地方多配置
int main(int argc, char **argv)
主要於平常我們會直接寫成
int main()
其實第一句是UNIX /Linux 中標準main函數命令列參數個數喔~~~
第一個int argc 是用來統計程式執行時發送給main函數之命令參數個數
(預設為1)
第二個 char **argv 或也有人寫 char *argv[]
為字串陣列
每一個當中元素各自指向一個特定含意的參數
argv[0] ---> 程式運行之路徑全名
argv[1] ---> 於DOS命令列中執行程式名的第一個字串
argv[2] ---> 於DOS命令列中執行程式名的第二個字串
argv[3] ---> 於DOS命令列中執行程式名的第三個字串
argv[argc] -----> NULL
這裡在執行之前請在注意
運行後結果
==================================================================
參考資源:
Dlib + VS2013 人脸检测,无需CMAKE
http://blog.csdn.net/shuzfan/article/details/52149882
[随感]fatal error LNK1169: one or more multiply defined symbols found终极解决
http://blog.csdn.net/xcntime/article/details/4122982
/FORCE (強制檔案輸出)
https://msdn.microsoft.com/zh-tw/library/70abkas3.aspx
連結器屬性頁
https://msdn.microsoft.com/zh-tw/library/024awkd1.aspx
“error LNK2001: unresolved external symbol”
https://stackoverflow.com/questions/6598181/error-lnk2001-unresolved-external-symbol
How to fix?: error LNK2001: unresolved external symbol "extern "C" ........
https://social.msdn.microsoft.com/Forums/vstudio/en-US/4523e57a-c16b-4378-8c42-52f7cf5b98da/how-to-fix-error-lnk2001-unresolved-external-symbol-extern-c-?forum=vclanguage
[转载](转)error LNK2001原因总汇
http://blog.sciencenet.cn/blog-836964-693144.html
Dlib在Visual Studio 2015上的編譯和配置(超簡單版)
http://blog.csdn.net/xingchenbingbuyu/article/details/53236541
Dlib 19.2+VS2015 人脸检测(非CMake)
http://blog.csdn.net/qq_22764813/article/details/53053232
留言
張貼留言