一、運行環境
- win 10
- vs 2017(若是vs 2019,則需要安裝更高版本的qt,可自行百度安裝配置即可)
- qt 5.9.x
- opencv >= 3.0 (optional)
- cuda >= 10.0(optional)
- cudnn >= 7.0 for cuda 10(optional)
黑體爲必要的運行環境。
二、下載安裝Qt 5.9.x
- 下載地址:Qt 5.9.x。筆者下載的是5.9.6版本(只要是5.9系列均可),點擊“...x86-5.9.6.exe”文件進行下載:
- 下載完成後雙擊qt安裝包,進入安裝頁面:
step 1 | 點擊“next” |
step 2 | “註冊”-->“郵箱驗證”-->“登陸” |
step 3 | “下一步” |
step 4 | 選擇“安裝路徑”,自定義,選擇空文件夾,點擊“next” |
step 5 |
點擊展開 Qt 5.9.6,勾選如下三項(vs版本不同則勾選版本對應的三項) tools組件按默認設置,無操作 點擊“下一步” |
step 6 | 接受“協議”,點擊“下一步” |
step 7 |
點擊“下一步”,完成“安裝” |
三、VS2017安裝Qt vs tools
- 打開VS2017,選擇工具 -> 拓展和更新:
- 選擇聯機->搜索qt->下載qt vs tools:
- 下載完畢後點擊“關閉”。
- 重啓vs 2017,會出現如下界面,點擊“修改”,安裝完畢後點擊“關閉”,進入vs:
四、VS2017配置Qt
- 進入vs 2017,菜單欄點擊“qt vs tools”,選擇“qt options”,點擊“add”添加:
- 配置系統環境變量:
- 增加以下路徑(根據自己qt安裝的具體路徑修改):
- 測試配置是否成功。打開vs 2017,菜單欄選擇“文件”-“新建”-“項目”:
- 右擊.ui文件,點擊“打開方式”,將qt designer設爲默認值,再雙擊.ui文件就可以打開qt designer:
- 如果是打開別人的qt項目,由於qt版本可能不一致會導致相關 頭文件 沒有默認導入,可以打開“qt project settings”,點擊“qt modules”,勾選需要的模塊(例如:core、gui、widgets):
五、編譯yolo爲C++ dll文件
yolov4項目地址:darknetAB
- 下載項目到本地:
- 下載權重文件:yolov4.weight 提取碼:4mic
- GPU版本: 需已安裝cuda、cudnn。vs打開 darknet-master\build\darknet\yolo_cpp_dll.sln 文件,右擊“項目”->“屬性”->"C\C++"->“預處理器”->"預處理器定義",首行添加“CUDNN"。接着以“x64 release”方式編譯(即菜單欄“生成”->“生成解決方案”):
- 若cuda版本不是10.0,則以記事本方式打開 darknet-master\build\darknet\yolo_cpp_dll.vcxproj,組合鍵ctrl+f搜索“cuda 10.0”,將兩處“cuda 10.0”改爲自己的cuda版本,例如“cuda 10.1”,之後重新編譯yolo_cpp_dll.sln。
- CPU版本: vs打開 darknet-master\build\darknet\yolo_cpp_dll_no_gpu.sln 文件,以“x64 release”方式編譯(即菜單欄“生成”->“生成解決方案”)。
- 編譯完成後,將在 darknet-master\build\darknet\x64 路徑下得到以下文件,同一時間只能選擇”gpu“或者”cpu“版本中的一種編譯使用,因爲編譯生成的文件名字是一樣的:
編譯得到的文件爲備用使用。對於GPU版本,筆者的cuda版本是10.1,若自己的cuda版本不是10.1,那麼需要將生成的dll和lib文件分別替換到 ./3rdparty/libdarknet/bin/release/gpu 和 ./3rdparty/libdarknet/lib 文件夾下。
六、qt編寫圖形界面,並加載動態鏈接庫
- 項目地址:Yolov4-QtGUI
- 項目結構:
- 3rdparty 存放相關頭文件和庫文件,下載鏈接:3rdparty 提取碼:f1vo (解壓到Yolov4-QtGUI項目目錄下)
- assets 存放測試結果圖片等
- config 存放屬性文件
- QtGuiDemo 存放主文件。
- x64 (將下載的權重文件yolov4.weight放置在 x64\model 目錄下)
- vs打開 Yolov4-QtGUI\QtGuiDemo.sln 文件
- GPU版本:修改屬性文件yolov4.prop,"鏈接器”->"輸入"->"附加依賴項"->yolo_cpp_dll_cpu.lib 。在"release x64"模式下,菜單欄點擊"生成"->"生成解決方案",並將
- 3rdparty\libdarknet\bin 路徑下的 pthreadGC2.dll、pthreadVC2.dll
- 3rdparty\libdarknet\bin\release\gpu 路徑下的 yolo_cpp_dll.dll
- 3rdparty\libopencv\bin 路徑下的 opencv_world342.dll
複製到Yolov4-QtGUI\x64\release目錄下。
- CPU版本:修改屬性文件yolov4.prop,"鏈接器”->"輸入"->"附加依賴項"->yolo_cpp_dll_cpu.lib。在"release x64"模式下,菜單欄點擊"生成"->"生成解決方案",並將
- 3rdparty\libdarknet\bin 路徑下的 pthreadGC2.dll、pthreadVC2.dll
- 3rdparty\libdarknet\bin\release\cpu 路徑下的 yolo_cpp_dll.dll
- 3rdparty\libopencv\bin 路徑下的 opencv_world342.dll
複製到Yolov4-QtGUI\x64\release目錄下。
- 運行項目。雙擊x64\Release目錄下的exe文件。
七、FAQ
八、發行版
- cpu version:yolov4_cpu 提取碼:l3eh
權重文件:yolov4.weight 提取碼:4mic 解壓到./model目錄下
- gpu version:yolov4_gpu 提取碼:d6lz
解壓後運行release目錄下的exe文件即可
運行結果截圖:
參考文章:https://blog.csdn.net/gaojixu/article/details/82185694
https://blog.csdn.net/fan2273/article/details/78262952
參考項目:https://github.com/jmu201521121021/FaceDetector-Base-Yolov3-spp
https://github.com/jmu201521121021/QtGuiDemo