日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[常用工具] dlib编译调用指南

發布時間:2024/3/24 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [常用工具] dlib编译调用指南 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

dlib是一個C++工具包(dLIB中也有Python接口,但是主要編程語言為C++),包含絕大多數常用的機器學習算法,許多圖像處理算法和深度學習算法,被工業界和學術界廣泛應用于機器人、嵌入式設備、移動電話和大型高性能計算環境等領域。dlib的開源許可允許您在任何應用程序中免費使用它。在工程實踐中,dlib通常和OpenCV結合使用,OpenCV提供圖像處理算法,dlib提供機器學習算法。對于從事計算機視覺行業的人,非常推薦學習使用dlib。本文主要講述dlib在Windows(win10)和linux(ubuntu18.04)下面向C++的編譯安裝調用。dlib具體介紹見其官網dlib官網。

文章目錄

  • 1 資源
  • 2 Windows下C++編譯安裝調用dlib
    • 2.1 編譯
    • 2.2 配置與使用
  • 3 Ubuntu下C++編譯安裝調用dlib
    • 3.1 編譯
    • 3.2 配置與使用
  • 4 Python安裝調用dlib
  • 5 參考

1 資源

在dlib的github倉庫下載對應版本文件。鏈接地址為:dlib。此外,在使用dlib中需要使用dlib提供的模型,下載地址見dlib-models。如果網速太慢,可以看看gitee備份。地址為:dlib-gitee和dlib-models-gitee。

本文判斷dlib是否成功編譯的示例代碼為dlib\examples目錄下的3d_point_cloud_ex.cpp。調用該示例代碼后會可視化一個簡單的3維點云數據。
代碼如下:

// The contents of this file are in the public domain. See LICENSE_FOR_EXAMPLE_PROGRAMS.txt /*This is an example illustrating the use of the perspective_window toolin the dlib C++ Library. It is a simple tool for displaying 3D point clouds on the screen.*/#include <dlib/gui_widgets.h> #include <dlib/image_transforms.h> #include <cmath>using namespace dlib; using namespace std;// ----------------------------------------------------------------------------------------int main() {// Let's make a point cloud that looks like a 3D spiral.std::vector<perspective_window::overlay_dot> points;dlib::rand rnd;for (double i = 0; i < 20; i+=0.001){// Get a point on a spiraldlib::vector<double> val(sin(i),cos(i),i/4);// Now add some random noise to itdlib::vector<double> temp(rnd.get_random_gaussian(),rnd.get_random_gaussian(),rnd.get_random_gaussian());val += temp/20;// Pick a color based on how far we are along the spiralrgb_pixel color = colormap_jet(i,0,20);// And add the point to the list of points we will displaypoints.push_back(perspective_window::overlay_dot(val, color));}// Now finally display the point cloud.perspective_window win;win.set_title("perspective_window 3D point cloud");win.add_overlay(points);win.wait_until_closed(); }// ----------------------------------------------------------------------------

2 Windows下C++編譯安裝調用dlib

Windows下的編譯使用很簡單,不需要其他的額外安裝庫,直接拉取dlib的倉庫就行了。本文將dlib倉庫放在D:\packages\dlib路徑下,然后通過cmake和vs2017編譯使用dlib。這一部分參考文章【C++】VS2019+Dlib安裝及整合詳細步驟。

2.1 編譯

step1
在D:\packages\dlib路徑下創建build文件夾和install文件夾,build文件夾用于存放相關編譯數據,install保存最后需要調用的生成文件。文件結構如下圖所示:

step2
打開cmake-gui,配置dlib庫。cmake安裝地址為:cmake。打開cmake-gui后設置源代碼目錄地址和生成文件地址,點擊configure。如圖所示:

然后配置編譯器,選擇對應的編譯器版本,再選擇編譯平臺版本x64。最后點擊finish,cmake將會自動編譯文件。

在編譯過程會出現找不到cuda的情況,忽視就行了。然后注意將指定的安裝目錄CMAKE_INSTALL_PREFIX這一項改為D:\packages\dlib\install。然后再點擊configure,如果沒有標紅,點擊generate。

step3
生成相關文件,generate成功后打開OpenProject即可,這樣就會打開vs2017。 如下圖所示:

打開后的vs2017界面如下圖所示,確定編譯平臺為debug/x64,然后點擊生成-生成解決方法即可,如下圖所示。這樣的好處是知道哪些模塊生成失敗。如果有生成譯錯誤,檢查即可。這一過程約3分鐘,不同機器時間不一樣。

生成成功后,如下圖所示。可以有生成跳過,但是不能有生成失敗。

如果生成后沒有失敗的,選擇解決方案-INSTALL-僅用于項目-僅生成INSTALL,如下圖所示:

此外以上操作只能生成dlib Debug版本。Release版本需要修改配置平臺,重復以上操作。如下圖所示:

最后如果install文件夾中有include文件夾和lib文件夾,表明編譯過程成功。如下圖所示:

在windows平臺下,某些情況下dlib會使用libjpeg,libpng模塊,可能會出現鏈接libjpeg錯誤的情況。如果你使用的是anaconda,dlib會自動鏈接anconda的libjpeg,libpng模塊。這些模塊是32位的,你只能用x86的dlib版本,否則出錯。如果是想用x64平臺,需要自己編譯第三方模塊的x64版本,比如libpng,libjpeg,zlib。github搜索這些模塊,然后編譯后。用visual studio的命令行開發工具,進入build目錄,自行指定libjpeg等鏈接文件,再進行編譯。其中dlib要鏈接的第三方庫自行指定目錄(目前看來這一種解決辦法),具體命令如下:

# Visual Studio 15 2017指vs2017,vs2015用Visual Studio 14 2015,vs2019用Visual Studio 16 2019 # -DCMAKE_INSTALL_PREFIX=../instal 編譯文件安裝目錄 cmake -G "Visual Studio 15 2017" -DJPEG_INCLUDE_DIR=..\dlib\external\libjpeg -DJPEG_LIBRARY=..\dlib\external\jpeg.lib -DPNG_PNG_INCLUDE_DIR=..\dlib\external\libpng -DPNG_LIBRARY_RELEASE=..\dlib\external\libpng.lib -DZLIB_INCLUDE_DIR=..\dlib\external\zlib -DZLIB_LIBRARY_RELEASE=..\dlib\external\z.lib -DDLIB_GIF_SUPPORT=OFF -DCMAKE_INSTALL_PREFIX=../install -DCMAKE_GENERATOR_PLATFORM=x64 ..# 編譯debug版本 cmake --build . --target INSTALL# 編譯release版本 cmake --build . --config Release --target INSTALL

2.2 配置與使用

新建vs2017項目,然后選擇屬性管理器,新建屬性列表dlib如下圖所示。這樣該dlib屬性列表以后可以重復導入使用,不需要每次新建工程都配置。

修改Release|X64模式下的dlib屬性,修改VC++目錄下的可執行目錄,庫目錄。如下圖所示:

包含目錄設置如下,添加頭文件:

D:\packages\dlib\install\include

庫目錄設置如下:

D:\packages\dlib\install\lib

然后修改鏈接器-輸入-附加依賴項,如下圖所示:

附加依賴項設置如下。注意不同版本dlib編譯生成的lib不一樣,注意區分,如果是debug就調用相應的debug版本,都在install\lib目錄下。

dlib19.22.99_release_64bit_msvc1916.lib

然后調用本文在第一節提到的示例代碼3d_point_cloud_ex.cpp文件,結果如下圖所示,就是一個展示3維點云的代碼,可以拖動或放大縮小圖形。

3 Ubuntu下C++編譯安裝調用dlib

3.1 編譯

ubuntu下編譯使用dlib比windows下稍微復雜,因為ubuntu缺少一些dlib所需要的庫,有時會出現莫名其妙的錯誤,一般來說都是缺少圖形顯示庫,比如linux下dlib需要x11圖像化界面(windows不需要,其他系統圖像化界面可能不一樣),所以先安裝x11。如果不安裝可能會出現X11相關錯誤。這一部分參考文章ubuntu下使用 dlib和cmake-cant-find-x11

sudo apt-get install libx11-dev

然后進入dlib根目錄,輸入以下命令:

mkdir build; cd build; cmake … -DUSE_AVX_INSTRUCTIONS=1; make -j12

上述命令會編譯AVX,來加速CPU運行,如果出現錯誤使用以下命令編譯:

mkdir build; cd build; cmake …; make -j12

3.2 配置與使用

新建一個文件夾dlib-test,將3d_point_cloud_ex.cpp復制到該文件夾。進入該文件夾,新建CMakeList.txt文件,CMakeList.txt內容如下。注意CMake文件鏈接dlib庫的路徑地址

cmake_minimum_required(VERSION 2.8.12) # 工程名 project(dlib_test)SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O2 -DDLIB_JPEG_SUPPORT")IF(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Weverything") ELSEIF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra") ENDIF()# 包含OpenCV find_package(OpenCV REQUIRED) if (OpenCV_FOUND)include_directories(${OpenCV_INCLUDE_DIRS})message("OpenCV found") endif()# 包含X11 find_package(X11 REQUIRED) if (X11_FOUND)include_directories(${X11_INCLUDE_DIR})message("X11 found") endif()# 添加dlib include_directories(/home/{yourpath}/dlib) link_directories(/home/{yourpath}/dlib/build/dlib/)# 添加代碼 add_executable(dlib_test 3d_point_cloud_ex.cpp) # 鏈接庫 # libdlib.a - lpthread - lX11分別表示鏈接dlib,多線程,X11 target_link_libraries(dlib_test ${OpenCV_INCLUDE_LIBS} ${X11_LIBRARIES} libdlib.a -lpthread -lX11)

然后輸入以下命令,即可編譯運行示例代碼:

mkdir build; cd build; cmake …; make -j12; ./dlib_test

如果出現第二節的三維點云圖形,表明dlib安裝成功。

4 Python安裝調用dlib

通常直接用pip install dlib會出錯,所以需要安裝一系列的庫,主要是cmake、Boost。具體如下:
windows:

pip install cmake pip install boost pip install dlib

如果發現編譯失敗,看看python–3.8安裝dlib,直接通過whl包安裝dlib也行

linux:

sudo apt-get install libx11-dev sudo apt-get install libboost-all-dev sudo apt-get install cmake python3 -m pip install dlib

安裝成功后,在python環境import dlib即表明安裝成功,當然也可以編譯安裝,具體步驟見官方倉庫文檔。

5 參考

  • dlib官網
  • dlib
  • dlib-models
  • dlib-gitee
  • dlib-models-gitee
  • 【C++】VS2019+Dlib安裝及整合詳細步驟
  • ubuntu下使用 dlib
  • cmake-cant-find-x11

總結

以上是生活随笔為你收集整理的[常用工具] dlib编译调用指南的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。