YOLOv3的Darknet在OpenCV3.4.1(bug)下編譯出錯填坑

剛配置完環境html

http://www.javashuo.com/article/p-vypvgogc-o.htmlgit

能正常跑原版 darknet ,可是跑了一下別人修改的版本出現了錯誤github

查Google以後才發現遇到這個問題的朋友不在少數,大概的緣由是由於OpenCV 3.4.1在C的API裏有bug,因此致使了這個編譯問題。那麼我將國外大神的辦法轉到這裏,但願可以幫助你們解決這個問題,原帖地址在這,也衷心感謝這位國外大神。ui

步驟有兩步,須要修改兩個c文件。spa

 

第一步,找到:code

/usr/local/include/opencv2/core/cvdef.h

修改485行左右的代碼:htm

#else
#include <stdint.h>
namespace cv {
typedef ::int8_t int8_t;
typedef ::uint8_t uint8_t;
typedef ::int16_t int16_t;
typedef ::uint16_t uint16_t;
typedef ::int32_t int32_t;
typedef ::uint32_t uint32_t;
typedef ::int64_t int64_t;
typedef ::uint64_t uint64_t;
}
#endif

把這段代碼註釋掉,改成:blog

#else
#include <stdint.h>
//namespace cv {
//typedef ::int8_t int8_t;
//typedef ::uint8_t uint8_t;
//typedef ::int16_t int16_t;
//typedef ::uint16_t uint16_t;
//typedef ::int32_t int32_t;
//typedef ::uint32_t uint32_t;
//typedef ::int64_t int64_t;
//typedef ::uint64_t uint64_t;
//}
#endif
 

第二步,找到:get

/usr/local/include/opencv2/highgui/highgui_c.h

修改139行左右的代碼:it

CVAPI(cv::Rect)cvGetWindowImageRect(const char* name);

修改類型爲:

CVAPI(CvRect)cvGetWindowImageRect(const char* name);

這兩步作完之後,再在darknet文件夾下執行make命令,應該就能編譯經過了。編譯經過之後別忘了把修改過的代碼改回來,由於不知道之後何時萬一還會用到,到時候忘了本身改過這裏的話會很麻煩。

 

 

 

參考

https://zhuanlan.zhihu.com/p/36933700

相關文章
相關標籤/搜索