darknet+opencv在windows上的編譯


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM