由于SSD的作者是基于Opencv2.0的环境下写出的SSD源码,而Opencv2和Opencv3的源码又做了比较大的改变,导致编译时会出现像变量没声明的错误,因此需要对以下几个文件进行修改。
- /caffe/src/caffe/layers/video_data_layer.cpp
//加上一个头文件
#include <opencv2/videoio.hpp>
//加上cv命名空间
using namespace cv;
//去掉CV_CAP_PROP_FRAME_COUNT,CV_CAP_PROP_POS_FRAMES前面的CV_
- /caffe/src/caffe/util/bbox_util.cpp
//修改CV_RGB为cv::Scalar,但应该注意两者的区别,前者为RGB,后者为BGR
//修改CV_FILLED为cv::FILLED
- /caffe/src/caffe/util/im_transforms.cpp
//加上以下两句
#define CV_BGR2HSV cv::COLOR_BGR2HSV
#define CV_BGR2Lab cv::COLOR_BGR2Lab
另外,如果出现以下问题
/usr/bin/ld: cannot find -lcudnn
collect2: error: ld returned 1 exit status
解决方法如下:
修改/usr/local/cuda/lib64/目录下和cudnn有关的三个文件的权限即可。