【问题标题】:Caffe with OpenCV 3 and NVIDIA Digits: OpenCV version conflict (2.4 vs 3.0)Caffe with OpenCV 3 and NVIDIA Digits:OpenCV 版本冲突(2.4 vs 3.0)
【发布时间】:2016-03-11 13:16:13
【问题描述】:

背景:

我希望同时使用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 install guide 安装 Caffe 依赖项(OpenCV 除外)
  2. 将 OpenCV 3 从源安装到 /usr/local
  3. 已测试 OpenCV 安装
    • 演示工作良好,包括 OpenCV 3具体代码
  4. 编译 Caffe,设置 Makefile.config 使用 OpenCV 3
  5. 经过测试的 Caffe 安装
    • 所有测试均已通过,演示运行良好
  6. 按照install guide 安装的位数
    • Caffe 和 OpenCV 2.4 由安装程序脚本默认安装
    • OpenCV 3 被 OpenCV 2.4 破坏 (?)
  7. 从数字Getting Started guide执行步骤
    • 所有步骤均成功
  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: 警告:libopencv_core.so.3.0,/home/josh/software/caffe/build/lib//libcaffe.so 需要,可能与 libopencv_core.so.2.4 冲突 /usr/bin/ld: /tmp/ccHaWcOl.o: 未定义对符号“_ZN2cv6String10deallocateEv”的引用 //usr/local/lib/libopencv_core.so.3.0:添加符号时出错:命令行中缺少 DSO collect2: error: ld 返回 1 个退出状态

问题:

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

【问题讨论】:

    标签: opencv ubuntu opencv3.0 caffe nvidia-digits


    【解决方案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_* 替换为:libopencv_*.so.3.0

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2017-07-01
        • 1970-01-01
        • 2019-08-07
        • 2020-10-26
        • 2019-04-11
        • 2017-06-17
        • 2015-11-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多