TX2上darknet框架编译问题梳理

darknet源码下载:https://github.com/pjreddie/darknet

1. 编译设置

打开darknet的源码根目录,里面有Makefile文件,根据需要编译相关模块:

TX2上darknet框架编译问题梳理_第1张图片

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模块的问题,如下图:

TX2上darknet框架编译问题梳理_第2张图片

把红色框中的代码注释掉即可,不影响运行结果,只是不显示图而已。

编译问题2:若编译出现nvcc找不到的情况,实际你的TX2板子已经安装了nvcc,用nvcc -V可查到。这时需要改变makefile中NVCC的路径,一般nvcc的默认路径为“/usr/local/cuda/bin/nvcc”,设置为你自己的nvcc路径即可编译通过。

2.验证

编译完后,输入以下命令验证:

./darknet

若出现:“usage:./darknet ”,说明已安装成功。

3.修改成图片批量处理

官网上的代码编译后是不支持图片批量处理的,要改成批量处理,可参考此文:

https://www.cnblogs.com/xieqi/p/9818056.html,该博主写的相当不错的,其中他在改批量处理时候有一点小bug,博主应该是忽略了windows下和linux下字符串处理的区别。

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

其中:l1在windows下长度为3,但在linux下长度为4.

所以在处理字符串类型的图片路径时这一点需引起重视。

你可能感兴趣的:(TX2)