https://blog.csdn.net/learning_tortosie/article/details/80594399

多版本OpenCV共存

假设我们已经安装好一版OpenCV,一般都安装在/usr/local下。
如果需要安装另一个版本的OpenCV,就不能再安装到/usr/local,而是选择其他路径,否则会覆盖掉之前的版本。
下载OpenCV

首先去https://opencv.org/releases.html下载所需版本的Sources版,也可去https://github.com/opencv/opencv/tree/3.4.1下载。
假设我们安装的第二个OpenCV版本为3.4.1。
安装依赖包

[compiler] sudo apt-get install build-essential
[required] sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
[optional] sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

编译安装OpenCV

详见官方文档https://docs.opencv.org/master/d7/d9f/tutorial_linux_install.html,参考步骤如下。

$ cd opencv-3.4.1
$ mkdir build
$ cd build
$ mkdir installed
$ cmake \
-DCMAKE_BUILD_TYPE=RELEASE \
-DCMAKE_INSTALL_PREFIX=~/opencv-3.4.1/build/installed \
\
-DWITH_CUDA=OFF \
\
-DBUILD_DOCS=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_TESTS=OFF \
-DBUILD_PERF_TESTS=OFF \ 
..
$ make -j4
$ sudo make install

说明
1. 其中~/opencv-3.4.1/build/installed为安装OpenCV3.4.1的路径,这个十分关键。
2. 设置OFF的理由如下,可大大加快编译速度,当然还要根据需求进行设置。

It is useful also to unset BUILD_EXAMPLES, BUILD_TESTS, BUILD_PERF_TESTS - as they all will be statically linked with OpenCV and can take a lot of memory.
    此外,还可以取消设置BUILD_EXAMPLES,BUILD_TESTS和BUILD_PERF_TESTS,因为它们都将与OpenCV静态链接,并且会占用大量内存。

多版本OpenCV切换

打开~/.bashrc

$ gedit ~/.bashrc

在文件末尾增加以下内容

export PKG_CONFIG_PATH=~/opencv-3.4.1/build/installed/lib/pkgconfig
export LD_LIBRARY_PATH=~/opencv-3.4.1/build/installed/lib

更新~/.bashrc

$ source ~/.bashrc

查询OpenCV版本

$ pkg-config --modversion opencv

如果输出3.4.1,就表明配置成功。
如果想使用之前的版本,在~/.bashrc中注释掉增加的内容,然后source ~/.bashrc即可。

如果只有一个版本的OpenCV,在CMakeList.txt中使用以下语句即可。

FIND_PACKAGE(OpenCV REQUIRED)

在OpenCV编译好后,所在目录中会生成OpenCVConfig.cmake文件,这个文件中指定了CMake要去哪里找OpenCV,其.h文件在哪里等。
存在多版本OpenCV时,需要找到所需版本对应的OpenCVConfig.cmake文件,并将其路径添加到工程的CMakeLists.txt中。
示例如下:

cmake_minimum_required(VERSION 2.8)  
set(OpenCV_DIR "~/opencv-3.4.1/build")   
project(test)  
find_package(OpenCV REQUIRED)

多版本opencv 兼容相关推荐

  1. CImage与OpenCV兼容问题

    http://hi.baidu.com/gildor/item/fca3243bf3133549033edc91 CImage与OpenCV兼容问题 CImage类和OpenCV中的某个类冲突,在配置 ...

  2. C++版本OpenCv教程

    C++版本OpenCv教程(一)Mat-基本的图像容器 目标 我们有多种方法从现实世界获取数字图像:数码相机.扫描仪.计算机断层扫描和磁共振成像等等.在以上任何情况下,我们(人类)看到的都是图像.然而 ...

  3. 兄弟连html5在线画板,IT兄弟连 HTML5教程 HTML5做到了与之前版本的兼容

    原标题:IT兄弟连 HTML5教程 HTML5做到了与之前版本的兼容 为了保证HTML5能与之前的HTML版本达到最大的兼容,HTML5对一些元素标记的省略.boolean值的属性,以及引号的省略这几 ...

  4. ubuntu下如何安装两个版本OpenCV?

    本文首发于微信公众号「3D视觉工坊」--ubuntu下如何安装两个版本OpenCV? 前言 由于在VSLAM技术研究过程中,经常会涉及OpenCV不同版本在ubuntu系统下的安装.因此小凡在此简单总 ...

  5. tensorflow1.14.0  包含了1.x和2.x内容,此后版本要求兼容该版本

    tensorflow1.4  包含了1.x和2.x内容,此后版本要求兼容该版本 https://blog.csdn.net/wishchin/article/details/97613292

  6. Oracle Goldengate OGG 11g与各操作系统及数据库版本的兼容列表

    Oracle Goldengate OGG 11g (11.1.1.0.0)与各操作系统及数据库版本的兼容列表如下,仅供参考: Oracle GoldenGate Certification Matr ...

  7. 如何导入别人的android studio项目,解决gradle版本不兼容问题

    如何导入别人的android studio项目,解决gradle版本不兼容问题 参考文章: (1)如何导入别人的android studio项目,解决gradle版本不兼容问题 (2)https:// ...

  8. 解决Selenium与firefox浏览器版本不兼容问题

    解决Selenium与firefox浏览器版本不兼容问题 参考文章: (1)解决Selenium与firefox浏览器版本不兼容问题 (2)https://www.cnblogs.com/limxia ...

  9. 解决maven3.6版本不兼容idea2017问题

    解决maven3.6版本不兼容idea2017问题 参考文章: (1)解决maven3.6版本不兼容idea2017问题 (2)https://www.cnblogs.com/qianxiaoxion ...

最新文章

  1. .NET笔试题集(五)
  2. linux上logbok实时日志_如何实时查看linux下的日志
  3. 心得丨一文告诉你想学数据分析该读什么书、从哪本读起
  4. Windows编程-- 用户方式中线程的同步---关键代码段(临界区)
  5. Spring容器中获取Bean实例的七种方式(附实战源码)
  6. 洛谷 P1463 [POI2002][HAOI2007]反素数
  7. JavaScript鼠标经过图片晃动效果
  8. 化学人学python有前途吗-转载:python之蟒开启理论计算化学的新时代
  9. 数字用户线(Digital Subscriber Line,DSL)
  10. 10. 大型网站核心架构要素
  11. mysqld restart service 卡_MySQL数据库之mysqld服务启动失败, Failed to restart mysqld.service: Unit not found....
  12. 计算机专业英语词汇1500词
  13. Sitemesh前段框架基础
  14. 1.2版走迷宫小游戏(C++)
  15. 隐函数存在定理隐函数的高阶导数
  16. 企业网站优化操作步骤分享
  17. 手把手QQ机器人制作教程,根据官方接口进行开发,基于Python语言制作的详细教程(更新中)
  18. 金仓数据库KingbaseES ksql工具用户指南及参考--2. Ksql快速启动
  19. 怎样选择线阵相机,线阵镜头,线阵光源
  20. DevOps 转型实践

热门文章

  1. 判断一个字符串是否包含另一个字符串(用java但是不能用index()这个函数)
  2. 判断输入的整数是否为素数_C语言 | 判断是否素数
  3. 高一被清华姚班录取,高三委拒谷歌offer,一个重度网瘾少年到理论计算机科学家的蜕变...
  4. 大数据时代,如何才能提高自身竞争力?
  5. feign和ajax,SpringCloud-feign 声明式服务调用
  6. 光通信调制方式MATLAB仿真,基于LED的紫外光通信调制方式研究
  7. matlab损失函数出现nan,[译]在训练过程中loss出现NaN的原因以及可以采取的方法。...
  8. stc单片机c语言 pdf,STC单片机C语言程序设计 第13章 STC单片机C语言指针.pdf
  9. 为什么不可以使用哈曼顿距离_请对比下欧式距离和曼哈顿距离的差别
  10. pixel android8,谷歌Pixel 2更多信息:安卓8.1