【问题标题】:How to make builds use the newer version of two installed OpenCVs?如何使构建使用两个已安装 OpenCV 的较新版本?
【发布时间】:2015-10-19 09:57:46
【问题描述】:

我刚刚从源代码安装了最新的 OpenCV。安装后我发现我的电脑上已经安装了 OpenCV。现在我有一个/usr/include/opencv 和一个/usr/include/opencv2 同时存在。

当我尝试从最新版本编译示例时,它会自动转到目录opencv2 以查找头文件。显然新版本中的一些示例需要的头文件只存在于opencv,而不存在于opencv2

我检查了正在使用的版本如下。

$ pkg-config --modversion opencv
2.4.8

如何清理旧版本并设置环境变量以便使用新版本?


感谢您指出。我没有意识到/opencv/opencv2 在正常安装中同时存在。所以这些文件夹是无关紧要的。

这是我安装 OpenCV 所做的。我在新安装的 ubuntu 14.04 上遵循了本教程: http://www.bogotobogo.com/OpenCV/opencv_3_tutorial_ubuntu14_install_cmake.php

我 git 克隆并进行了完整的 make 安装。我以为 git 源是 3.0.0 版本,我错了吗?

(抱歉编辑晚了,非常感谢您的帮助!!)

【问题讨论】:

  • 我一直在使用 apt-get。我不确定直接删除旧版本,如果我这样做,依赖和其他设置会混乱吗?
  • 不确定您是否意识到在单个 OpenCV 安装中同时拥有 opencvopencv2 是正常的。
  • 请详细说明如何从源代码(cmake、make、sudo make install?)安装 OpenCV。还请告诉我们您是否安装了软件包 libcv-devlibopencv-dev
  • 如果你想安装不同版本的软件或库,你可以使用 stow.我已经解释了在以下答案中使用它的方法:goo.gl/97H8xE
  • opencv2 可能指的是现代化的 C++ OpenCV 包含,而 opencv 包含较旧的 C 可调用 OpenCV 包含。 All versions of OpenCV since 2.0.0 have those two folders。尽管您发现新版本中的一些示例,但我怀疑您的示例中的代码可能包含十年左右未更新的过时代码。您可以通过writing a simple program and printing out its version string查看OpenCV版本。

标签: c++ opencv ubuntu


【解决方案1】:

为了重现您的问题,我刚刚从 Ubuntu 软件包存储库安装了 OpenCV:

$ sudo aptitude install libopencv-dev

将包含文件放到这些地方:

/usr/include/opencv
/usr/include/opencv2

然后我从这个地方下载并安装了 OpenCV:http://opencv.org/

$ cd Downloads/opencv-3.0.0
$ mkdir build
$ cd build
$ cmake ..
[lots of configuration related output ...]
$ make -j7
[lots of build related output ...]
$ sudo make install
[lots of installation related output ...]

pkg-config 现在找到更新的版本:

$ pkg-config --modversion opencv
3.0.0

包含位于此处:

/usr/local/include/opencv
/usr/local/include/opencv2

您应该没有问题,因为您想使用后来安装的版本。 (您确定您正确安装了自定义版本:sudo make install?)


您可能想要删除旧版本:

$ sudo aptitude remove libopencv-dev

但是,您应该确保不要删除自定义构建所依赖的依赖项(zlib、libjpeg、libtiff、pibpng,...)。


话虽如此,pkg-config 会从它最后找到的 opencv.pc 文件中为您提供详细信息。

这些是可用的文件:

$ locate opencv.pc
/usr/lib/x86_64-linux-gnu/pkgconfig/opencv.pc
/usr/local/lib/pkgconfig/opencv.pc

后者属于较新的版本(从源代码构建),第一个属于较旧的版本(包安装)。

这是搜索路径:

$ pkg-config --variable pc_path pkg-config
/usr/local/lib/x86_64-linux-gnu/pkgconfig:/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig

根据搜索路径中的条目顺序,您可以通过 pkg-config 获得较新的版本。

【讨论】:

    猜你喜欢
    • 2019-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    相关资源
    最近更新 更多