Caffe与OpenCV 3和NVIDIA Digits:OpenCV版本冲突(2.4与3.0)



背景:

我希望同时使用Caffe和Digits,这样我就可以在Digits框架内或外部使用Caffe.

然而,对于一个特定的项目,我要求Caffe使用OpenCV 3,而不是Digits默认安装的OpenCV 2.4。该项目使用Digits外部的Caffe,不使用Digits框架。

似乎通过安装Digits,我的OpenCV 3安装被OpenCV 2.4"砸了",这在我最初的Caffe安装中造成了问题。

为了使事情更清楚,下面列出了我所采取的步骤。

从全新的Ubuntu 14.04安装:

  1. 根据Ubuntu安装Caffe依赖项(OpenCV除外)安装导向器
  2. 已从源安装OpenCV 3到/usr/local
  3. 已测试OpenCV安装
    • Demos运行良好,包括OpenCV3-特定代码
  4. 编译Caffe,将Makefile.config设置为使用OpenCV 3
  5. 经过测试的Caffe安装
    • 所有测试都通过了,演示效果良好
  6. 根据安装指南安装的数字
    • Caffe和OpenCV 2.4默认由安装程序脚本安装
    • OpenCV 3被OpenCV 2.4击败(?)
  7. 执行《数字入门》指南中的步骤
    • 所有步骤都成功
  8. 怀疑OpenCV冲突,所以尝试编译Caffe演示
    • 发生与OpenCV 3.0和2.4冲突有关的错误,详细信息如下

编译命令:

g++分类。cpp-o分类-I/home/josh/software/caffe/include/-L/home/josh/sioftware/caffe/build/lib/-lcaffe-I/usr/local/cuda/include-L/usr/local/cudia/lib64-lcuda-lcuda-alcuda-lcubass-L/home/josh/software/cudn/include/-L/home/josh/software/cundn/lib64/-lcudnn-L/usr/lib/x86_64-linux-gnu/-lglog-L/usr/local/lib-lbostrongystem-lopencv_core-lopenc_highgui-lopencv_imgproc-lopencv_imgcodecs-DUSE_OPNCV

错误消息:

//usr/bin/ld:warning:/home/josh/software/caffe/build/lib//libkafe.so所需的libopencv_core.so.3.0可能与libopencv.core.so.2.4冲突/usr/bin/ld:/tmp/ccHaWcOl.o:对符号'_ZN2cv6String10deallocateEv'的未定义引用//usr/local/lib/libopencv_core.so.3.0:添加符号时出错:命令行中缺少DSOcollect2:错误:ld返回1退出状态

问题:

  1. 如何在不破坏Caffe/Digits安装的情况下最好地解决OpenCV版本冲突
  2. 我需要删除OpenCV并重新安装Caffe和Digits吗?
    • 如果是这样的话,我需要做什么不同的事情来防止OpenCV版本冲突,同时仍然允许Caffe(与OpenCV 3)和Digits并行工作

安装OpenCV库时,共享库的存储方式类似于libopencv_core.so.2.4.8,其中2.4.8是OpenCV的版本号。libopencv_core.so文件通常链接到系统中安装的OpenCV的最后一个版本。

因此,尽管libopencv_core.so最初链接到libopencv.core.so.3.0,但当您安装旧版本时,链接会更新为链接到旧版本。

解决方法是专门调用caffe中最新的OpenCV库。为此,您必须修改caffe中的Makefile。将所有出现的opencv_*替换为:libopencv_*.so.3.0

如果安装Caffe,那么使用opencv3.0并不是一个理想的选择。Caffe与它不太兼容。如果你坚持使用它,请使用命令sudo apt-get autoremove libopencv-dev删除2.4版本。这个版本冲突的原因是,您安装了libopencv-dev(默认版本是2.4),并使用3.0安装了opencv。所以删除它,然后编译caffe。

最新更新