Openpose——windows編譯(炒雞簡單)
前言
最近準備看看rtpose
的程式碼,發現已經由openpose
這個專案維護著了,由於經常在windows
下除錯程式碼,所以嘗試了一下如何在windows
下編譯openpose
原始碼,結果發現,我靠,炒雞簡單,Cmake
一步搞定。
寫部落格的目的在於,為了避免後續openpose
的專案組各種維護各種加新內容的時候又改變了很多庫什麼的,比如升級CUDA
版本、Opencv
之類的,所以這裡記錄一下當前配置的環境和所需載入內容。
其實部落格壓根不用看,直接下載zip
然後丟進cmake
編譯完事。
國際慣例,參考部落格:
【注】強烈建議解壓目錄路徑不要太長,比如解壓在E:\code
下,不要解壓在E:\code\xx\xx\xx\xx_xxx
準備工作
使用工具
CMake
,Visual Studio
,CUDA
,cudnn
具體地,我用的具體版本是:
CMake
: 3.9.0
Visual Studio
:建議2013以上,我用的2015
CUDA
: 9.0,下載戳這裡
cudnn
:cudnn-9.0-windows10-x64-v7,戳這裡
關於CUDA的安裝就不說了,可以看別人部落格,也可以看我配置caffe的時候配置CUDA的方法
【注】無需再下載opencv、caffe之類的東東了
下載模型
也可以不下載,在CMake
的時候自動下載,但是會很慢,所以提前下載放好可以加快編譯速度
三方庫(放到\openpose-1.3.0\3rdparty\windows,解壓方式選擇解壓到當前資料夾):
編譯VS工程
在\openpose-1.3.0
資料夾中建立一個build
資料夾:
開啟CMake
,這樣設定路徑
直接點選下方的Configure
依據自己的電腦環境選擇VS版本,我選擇是的2015,版本儘量高一點吧,可能有些C++ 11
的特性在低版本支援不太好。
【注】這裡會下載三方庫,庫裡包含opencv
和caffe
編譯日誌如下:
Windows OS support currently is experimental.
Feel free to send us any suggestion or bug you encounter.
Building with CUDA.
Downloading windows dependencies...
opencv_310.zip already exists.
caffe3rdparty_2018_02_13.zip already exists.
caffe_2018_01_18.zip already exists.
Windows dependencies downloaded.
Adding Example OpenPoseDemo
Adding Example 1_custom_post_processing
Adding Example 1_extract_from_image
Adding Example 2_extract_pose_or_heatmat_from_image
Adding Example 1_openpose_read_and_display
Adding Example 2_user_processing_function
Adding Example 3_user_input_processing_and_output
Adding Example 4_user_input_processing_output_and_datum
Adding Example 1_user_asynchronous_output
Adding Example 2_user_synchronous
Adding Example 3_user_asynchronous
Download the models.
Downloading body (COCO) model...
Model already exists.
Not downloading body (MPI) model
Downloading face model...
Model already exists.
Downloading hand model...
Model already exists.
Models Downloaded.
Configuring done
再點一次Configure
,我也不知道為什麼,反正看很多時候使用CMake
最好點兩次,如果框中有紅色的條目就得注意了,肯定出錯了,建議貼在評論區大家討論,不要貼什麼cuda
之類的錯誤,自己看cuda
的安裝方法。
分析這個日誌可以發現很多Download
,都是自動下載的,我提前下載好了,所以就提示exists
最後generate
一下完事。
用VS2015開啟這個工程檔案,生成解決方案:
等一會就完成了,但是執行的時候發現很對dll
找不到,可以選擇新增新增電腦環境變數Path
的方法,也可以將缺的dll複製到C:\Windows\System32
或者C:\Windows\SysWOW64
或者是E:\openpose\openpose-1.3.0\build\x64\Release
中,我是直接複製到當前的編譯目錄,也就是可執行檔案存在的目錄中了,好像缺的挺多的,編譯完的時候只有openpose.dll
,但是執行的時候還需要
這些dll
都能在E:\openpose\openpose-1.3.0
中找到,複製過去就行了
執行測試
通過VS工程中的解決方案資源管理器中可以發現,提供的例項還是挺多的
在屬性頁選擇當前選定內容
後,可以針對每個案例執行看看結果,我就執行第一個了,預設有圖片,也可以自己選擇圖片,不要問怎麼改,自行分析原始碼,理論很複雜,但是僅僅更改圖片是很容易分析出來的:
錯誤資訊
上面說過,如果解壓路徑太長,CMake
可能出現的錯誤是:
Windows dependencies downloaded.
CMake Error at src/openpose/CMakeLists.txt:14 (if):
if given arguments:
"NOT" "FILE" "MATCHES" "E:/code_test/C++/openpose/openpose-1.3.0/include/openpose/experimental/*"
Regular expression
"E:/code_test/C++/openpose/openpose-1.3.0/include/openpose/experimental/*"
cannot compile
還有記得拷貝完那個三方庫記得解壓哈,不過是自動下載的就不需要了