1. 查看当前系统中opencv的版本:

pkg-config --modversion opencv

可以看到系统中目前存在opencv2.4.9.1及opencv3.2.0两个版本。

不太清楚opencv的2.4.9.1的是什么时候安装的;

然而,使用opencv_version命令查看,系统目前起作用的版本3.2.0-dev,是以前安装ros的时候安装的。

这就尴尬了,找不到2.4.9.1的安装位置,先记录一下,编译openpose的时候似乎能找到opencv。

多个opencv版本可以共存,并按照选择切换,转一篇别人的文章,在编译时选择opencv的版本。

标题:ubuntu下opencv3和opencv2共存

地址:http://blog.csdn.net/thornsuge/article/details/71171272

作者:thornsuge

最近高翔大神写的《视觉SLAM十四讲》到了,重新回顾,受益匪浅。不管是不是专注于视觉slam,都值得一看。

在之前的安装中,电脑默认安装的opencv2.4.8,当我们

FIND_PACKAGE( OpenCV REQUIRED ) 时

系统默认在/usr/share/OpenCV下找OpenCVConfig.cmake,确定引入的Opencv的头文件和库文件的位置。

高博在他的书中,选择了OpenCV3.1版本,与

sudo apt-get install libopencv-dev

安装的opencv2.4 的版本不一样,会出现一些冲突。

话虽如此,一些经典的算法选择的仍然是OpenCV的较早版本,因此我们需要直到多版本OpenCV并存。

网上其他的一些方法比较繁杂,我选择了一个我觉得比较简单的方法。

首先,下载OpenCV3的源码 opencv3.2 我选择了最新的3.2版本,和3.1差别不大。

下载解压后,我用cmake-gui进行安装,感觉比较直观。

mkdir build
cd build
cmake-gui ..

在configure中选择默认设置即可,opencv3要下载一个ippicv的第三方包,直接下比较慢,可以自己下后,放到3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e里即可。 
ippicv_linux_20151201.tgz

在之后的安装配置中,我把

CMAKE_INSTALL_PREFIX

改为

/usr/local/opencv3,之后generate,再make和sudo make install,在对应目录下就有opencv3的头文件和库文件了。

当自己所写的程序使用到opencv3时,在

FIND_PACKAGE( OpenCV REQUIRED ) 前,添加

set(OpenCV_DIR "usr/local/opencv3/share/OpenCV")

这样计算机就找到opencv3的对应头文件和库文件了,如果继续使用opencv2,不添加这一句就可以。

【2017-11-08】Linux与openCV:opencv版本查看及库文件位置等的更多相关文章

  1. Opencv各个版本的万能头文件

    每次下载opencv的新版本时,都需要重新写头文件,更改链接库配置,很麻烦有木有?下面这个头文件是我在别人的代码中淘出来的,很不错,与大家分享~(具体作者忘记了,不好意思啊) 作者很巧妙地利用Open ...

  2. windows下编译Android版本的boost库文件

    1.起因: 手上有一个用到了boost的asio库和thread库的工程要编译到手机上(Android版本和ios版本),本文只介绍如何编译到Android版本,ios版本之后再介绍,也许就不介绍了( ...

  3. Linux系统中如何添加自己的库文件路径

    库文件在连接(静态库和共享库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的.一般 Linux 系统把 /lib 和 /usr/lib 两个目录作为默认的库搜索路径,所以使用 ...

  4. Linux 中安装软件报缺少共享库文件的错误

    linux 安装一些如软件 或者相关的模块时,经常报出缺少一些依赖包的 libxxx.so等的共享库文件 首先找到 该共享库文件 然后查看/etc/ld.so.conf 这个文件记录了编译时使用的动态 ...

  5. Linux菜鸟——常见命令一 查看及创建目录文件等命令

    命令行提示符 [root@localhost ~]# [当前用户名@主机名 当前所在目录]$ linux 超级用户 root window 超级用户 administartor # 超级用户 $ 普通 ...

  6. Linux系统上java调用C++ so库文件

      PART1:     java中使用jna替代jni调用c++/c生成的 dll/so库文件需要做的事项 1.引入JNA依赖或者直接下载JNAjar包           <!-- http ...

  7. 2017.11.15 linux软件安装管理(todo)

    学习来自:http://www.imooc.com/learn/447 第一章 介绍 第二章 软件包简介 1.源码包 2.二进制包(RPM包或系统默认包) 脚本安装包其实是别人把软件安装的脚本写好了, ...

  8. Linux find过滤掉没有查看权限的文件

    参考:https://blog.csdn.net/sinat_39416814/article/details/84993424 https://www.jianshu.com/p/2b056e1c0 ...

  9. 【Linux】常用命令 lsof查看打开的文件

    Linux系统把软硬件都抽象成文件,所以通过文件可以追踪到很多重要信息,如读取的配置文件.打开的端口等. 下面是常见的用法: 默认测试文件名为text.txt 1,显示打开text.txt的进程: l ...

随机推荐

  1. redis中save和bgsave区别

    转自:redis中save和bgsave区别 SAVE 和 BGSAVE 两个命令都会调用 rdbSave 函数,但它们调用的方式各有不同: SAVE 直接调用 rdbSave ,阻塞 Redis 主 ...

  2. Golang Socket编程

    Socket编程 在很多底层网络应用开发者的眼里一切编程都是Socket,话虽然有点夸张,但却也几乎如此了,现在的网络编程几乎都是用Socket来编程.你想过这些情景么?我们每天打开浏览器浏览网页时, ...

  3. Linux du查询文件大小

    #查询磁盘当前容量信息 $df -h   #查询当前目录下所有文件的大小 $du -m .   #两种方式查询 仅当前目录下的子文件(文件夹)大小 $du -sh /cloud/*   $du -h ...

  4. [转载]Vue 2.x 实战之后台管理系统开发(一)

    2. 开发前须知 我的后台管理系统项目运用了如下框架/插件: Vue 2.x —— 项目所使用的 js 框架,我所使用的版本是:2.1.10 vue-router 2 —— Vue 2.x 配套路由, ...

  5. Gauva的安装——入门篇

    Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] .缓存 [caching] .原生类型支持 [primitives support] ...

  6. 几个常用的内存、CPU飙高 分析工具

    Process Hacker.Windbg.vs2017 调试托管内存.Microsoft.Samples.Debugging.ants memory profiler.ants performanc ...

  7. 九、双端队列LinkedBlockDeque

    一.简介 JDK通过BlockQueue阻塞队列实现了生产者-消费者模式,生产者向队列添加数据,消费者从队列里面消费数据. 但是在有些场景里面,我们是无法区分生产者消费者的,或者说既是生产者,也是消费 ...

  8. [LeetCode]Remove Duplicates from Sorted Array题解

    Remove Duplicates from Sorted Array: Given a sorted array, remove the duplicates in place such that ...

  9. Java - “JUC”原子类

    根据修改的数据类型,可以将JUC包中的原子操作类可以分为4类. 1. 基本类型: AtomicInteger, AtomicLong, AtomicBoolean ;2. 数组类型: AtomicIn ...

  10. Bash拾遗:变量

    使用引号包裹变量 在<高级Bash脚本编程指南>中的4.1节中有这么个例子: hello="A B C D" echo $hello # A B C D echo &q ...