0

背景:

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

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

看来,通过安装 Digits,我的 OpenCV 3 安装被 OpenCV 2.4 “破坏”,这现在导致我原来的 Caffe 安装出现问题。

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

从全新的 Ubuntu 14.04 安装:

  1. 根据Ubuntu 安装指南安装 Caffe 依赖项(OpenCV 除外)
  2. 将 OpenCV 3 从源安装到/usr/local
  3. 测试OpenCV安装
    • 演示工作正常,包括 OpenCV 3 特定代码
  4. 编译的 Caffe,设置Makefile.config为使用 OpenCV 3
  5. 经过测试的 Caffe 安装
    • 所有测试均通过,演示运行良好
  6. 根据安装指南安装的数字
    • 安装程序脚本默认安装 Caffe 和 OpenCV 2.4
    • OpenCV 3 被 OpenCV 2.4 破坏(?)
  7. 执行 Digits入门指南中的步骤
    • 所有步骤都成功
  8. 怀疑OpenCV冲突,所以尝试编译一个Caffe demo
    • 发生与 OpenCV 3.0 和 2.4 冲突有关的错误——详情如下。

编译命令:

g++ 分类.cpp -o 分类 -I/home/josh/software/caffe/include/ -L/home/josh/software/caffe/build/lib/ -lcaffe -I/usr/local/cuda/include -L/ usr/local/cuda/lib64 -lcuda -lcudart -lcublas -lcurand -I/home/josh/software/cudnn/include/ -L/home/josh/software/cudnn/lib64/ -lcudnn -L/usr/lib/ x86_64-linux-gnu/ -lglog -L/usr/local/lib -lboost_system -lopencv_core -lopencv_highgui -lopencv_imgproc -lopencv_imgcodecs -DUSE_OPENCV

错误信息:

/usr/bin/ld: 警告:/home/josh/software/caffe/build/lib//libcaffe.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:添加符号时出错:命令行collect2中缺少DSO:错误:ld返回1退出状态

问题:

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

2 回答 2

1

安装 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_*to:libopencv_*.so.3.0

于 2015-12-10T20:27:13.967 回答
-1

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

于 2017-04-01T03:54:32.420 回答