caffe 因为opencv版本混淆,报错:id_release/lib/libcaffe.so: cv::imread(cv::String const&, int)未定义’

编译caffe时报错
ild_release/lib/libcaffe.so: undefined reference to cv::imread(cv::String const&, int)
报错原因:
caffe默认使用opencv2.X版本,但是我的机器上安装的是opencv 3.2.0,这个3.2.0,也是默认装的,如果你按照教材,重新装最新的4.0以上的。这里也会出这个问题。这里可以通过查看系统当前opencv版本.

pkg-config --modversion opencv  

上面这个问题是直接修改完配置文件Makefile.config后,直接在caffe文件下make出现的问题。
可能的解决方法包括:

  1. Makefile.config中OPENCV_VERSION := 3取消注释(亲测可用)
  2. Makefile中找到LIBRARIES(在PYTHON_LIBRARIES := boost_python python2.7 前一行)并修改为:
LIBRARIES += glog gflags protobuf leveldb snappy \
             lmdb boost_system hdf5_hl hdf5 m \ 
             opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs

还可以通过cmake来避免这个错误。
在通过在caffe中的build目录下cmake …编译好的输出信息查看caffe里面的opencv的版本,应该会是你重新安装的4.0版本,所以这里编译就一直会报错,这里的报错是caffe/src/caffe/layer/window_data_layer.cpp,里面一个变量混淆。这里如果按照他的提示改的话,也解决不了。因为本质的问题是,opencv 版本的问题。这里我们只需要卸载,4.0版本的,让caffe里面的opencv和系统当中的保持一致就可以解决这个问题了。
每次修改文件后需要清空build文件夹用rm -rf ./build/*,然后重新cmake

mkdir build
cd build
cmake ..
make all -j12
make runtest -j8

网上提供了很多解决的办法,但是都没有解决我的问题,所以大家可以查看自己的问题是不是和我一样。我弄了一个通宵才解决,贴出来也是为了帮助有相同问题的朋友。因为我没看到网上有关于我这个问题的解决的帖子。
这里提供issue地址:https://github.com/BVLC/caffe/issues/2348

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值