darknet 源碼網站:https://github.com/pjreddie/darknet
技術支持官網:https://pjreddie.com/darknet/
darknet采用C++編寫,從github下載源碼后,需要先編譯才能運行。
在windows下不支持opencv的編譯方法較為簡單,參見本人前一篇文章。
在windows下支持opencv的編譯方法本人走了較多彎路,因此總結出來,給同樣需要在windows下使用yolo的人員參考。
1, 踩過的坑
最直接的辦法就是修改makefile,將OPENCV=0改為OPENCV=1,然后采用cgywin的gcc來make
但make時會出現pkgconfig未配置或opencv.pc找不到。
網上查了一下,似乎要生成opencv.pc需要重新編譯opencv源代碼,甚為繁瑣。且一般的編譯指導都是在linux環境下。
在網上翻了一下,想直接找一個opencv.pc的例子下載來改改,也找不到。
2,思路
后來想,pkgconfig或opencv.pc無非也就是配置一些編譯需要的頭文件和庫文件,為什么不直接在makefile中直接配置呢?
於是在makefile的opencv段中,刪除了以下兩段。
LDFLAGS+= `pkg-config --libs opencv`
COMMON+= `pkg-config --cflags opencv`
但make時顯然就會報錯,可以按錯誤提示重新配置參數。
3,解決頭文件問題
由於編譯darknet時需要opencv的頭文件,make時會報錯,顯示找不到文件 “opencv2\highgui.hpp”等等之類的信息。
於是將opencv3安裝目錄下的“opencv\build\include\opencv2”目錄整體拷貝到darknet的“\include”目錄下,問題解決。
4,解決庫文件問題
make此時可以成功生成*.o目標文件,但因為未指定opencv庫,無法鏈接生成darknet.so和darknet.a文件。
因此在makefile的opencv段中,加入以下配置。具體路徑視計算機安裝opencv的位置而定:
LDFLAGS+= D:/opencv3/opencv/build/x64/vc14/lib/opencv_world330.lib
此時在執行make,就能成功編譯出darknet.exe、darknet.so和darknet.a文件。其中包含opencv功能,檢測完畢可以直接彈出窗口
darknet detector test cfg/coco.data cfg/yolov2.cfg ../dn-wgts/yolov2.weights data/kite.jpg