TX2上darknet框架編譯問題梳理

darknet源碼下載:https://github.com/pjreddie/darknet

1. 編譯設置

打開darknet的源碼根目錄,裏面有Makefile文件,根據需要編譯相關模塊:

darknet的opencv模塊採用了1.x版本的IplImage數據類型以及有許多1.x版本的API接口,該類型以及相關的接口在opencv4+版本中已被棄用。因此編譯opencv時需注意,Darknet採用c語言編寫,你的機子需安裝c++接口的opencv,且版本不得高於4.0,最好是3.0以下,很多在1.x版本的接口都在3.x版本逐步被棄用了。所有如果你要修改源碼opencv模塊,還是比較麻煩的,還要熟悉opencv1.x版本的相關接口,1.x版本的opencv是c語言編寫的,改起來就更加DT了。

編譯問題1:編譯過程中遇到的關於opencv模塊的問題,如下圖:

把紅色框中的代碼註釋掉即可,不影響運行結果,只是不顯示圖而已。

編譯問題2:若編譯出現nvcc找不到的情況,實際你的TX2板子已經安裝了nvcc,用nvcc -V可查到。這時需要改變makefile中NVCC的路徑,一般nvcc的默認路徑爲“/usr/local/cuda/bin/nvcc”,設置爲你自己的nvcc路徑即可編譯通過。

2.驗證

編譯完後,輸入以下命令驗證:

./darknet

若出現:“usage:./darknet <function>”,說明已安裝成功。

3.修改成圖片批量處理

官網上的代碼編譯後是不支持圖片批量處理的,要改成批量處理,可參考此文:

https://www.cnblogs.com/xieqi/p/9818056.html,該博主寫的相當不錯的,其中他在改批量處理時候有一點小bug,博主應該是忽略了windows下和linux下字符串處理的區別。

char *str1='ads';
int l1=strlen(str1);

其中:l1在windows下長度爲3,但在linux下長度爲4.

所以在處理字符串類型的圖片路徑時這一點需引起重視。

發佈了65 篇原創文章 · 獲贊 34 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章