Windows 下 Qt 調用 YOLOv4 動態連結函式庫

李謦伊
謦伊的閱讀筆記
5 min readSep 26, 2020

之前有介紹過在 linux 編譯 Darknet,但這次要在 windows 上的 Qt 使用 YOLOv4 model,因此本篇文章會先介紹在 windows 編譯 Darknet 以及如何調用 YOLOv4 動態連結函式庫

目前 YOLOv4 只有 opencv 4.4.0 支援,但若要用其他版本的 opencv 就要調用 YOLOv4 動態連結函式庫了!

在調用之前要先來編譯 Darknet,目前的環境是在 windows 上操作,使用 Visual Studio 2017 做編譯

在 Windows 上編譯 Darknet

首先將 darknet 下載下來解壓縮,進入 build/darknet 資料夾後,會看到以下的檔案,其中 yolo_cpp_dll.sln 是動態連結函式庫的編譯版本,就是將 YOLO 的功能打包成 dll檔

接著開啟 yolo_cpp_dll.sln 使用 Visual Studio 2017 做編譯 (若沒有 GPU,可以使用yolo_cpp_dll_no_gpu.sln)

開啟後對 yolo_cpp_dll.sln 按右鍵 -> 屬性

進入屬性視窗後,點選 VC++目錄 -> include 目錄,在 include 目錄加入 opencv 的路徑

  • opencv\build\include\opencv2
  • opencv\build\include

一樣在 VC++目錄 -> 程式庫目錄,然後加入 opencv vc15 library 的路徑

  • opencv\build\x64\vc15\lib

🔹 選用 vc15 是因為我是用 Visual Studio 2017 編譯,若是使用 Visual Studio 2015 則要選用 vc14

然後在屬性頁視窗的連結器 -> 輸入 -> 其他相依性 加入 opencv library 以及 pthreadVC2

  • pthreadVC2.lib
  • opencv_worldxxx.lib
  • opencv_worldxxxd.lib

設置好按確定,就開始建置~~ 一樣對 yolo_cpp_dll.sln 按右鍵 -> 建置,需要等待一段時間編譯

編譯好後,會在x64資料夾中新增以下檔案

  • yolo_cpp_dll.dll
  • yolo_cpp_dll.lib

在 Qt 調用 YOLO 動態連結函式庫

接著在 darknet 路徑下的 include 資料夾把 yolo_v2_class.hpp 加入你的程式裡

除此之外,還需要 name、cfg、weights 檔、要推理預測的圖片或影片。下圖為放置程式的資料夾內容

然後加入主程式,首先開啟 Qt 新增一個專案,然後在 main.pro 檔裡添加以下內容 (要加入 opencv 及 darknet 路徑還有 library)

放置程式的資料夾所有檔案如下

主程式中要加入yolo_v2_class.h 以及動態連結 yolo_cpp_dll.lib

#include “yolo_v2_class.h”#pragma comment(lib, "yolo_cpp_dll.lib")  // imported DLL

全都設定好後就可以執行啦!

--

--