参考:
多个opencv版本配置:https://immortalqx.github.io/2021/07/06/opencv-notes-0/
多个opencv版本配置与调用:https://blog.csdn.net/BeeGreen/article/details/104397348
查阅显卡计算能力对应表:https://blog.csdn.net/qq_42683011/article/details/113825841

配置OpenCV

Ubuntu18.04配置OpenCV及多版本OpenCV共存。
以配置opencv4.2.0和opencv4.5.5为例,其他版本也适用。

一、安装OpenCV的依赖包

一步一步安装下面所有的依赖包,如果下面的安装报错,根据报错的具体信息上网查找相关资料即可解决。

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

二、下载需要的OpenCV版本和文件放置

所有OpenCV的发布版本都可以在下面这个网址找到,根据自己的需要下载即可。
https://github.com/opencv/opencv/releases
我们需要安装的是 opencv-4.2.0 以及它的扩展模块 opencv_contrib-4.2.0,因此我们可以在下面的网址中下载,这里我下载的都是zip包:
opencv-4.2.0
opencv_contrib-4.2.0

先创建一个OpenCV的总文件夹,用来存放不同版本的opencv源码。这里在里面先创建一个OpenCV-4.2.0文件夹用来存放4.2.0版本的源代码,然后在里面进行编译。
比如我这里在home目录下创建一个OpenCV文件夹:

mkdir OpenCV
cd OpenCV
mkdir OpenCV-4.2.0

然后将刚刚下载的那两个opencv的文件解压缩后,放到创建的OpenCV-4.2.0文件夹中。

三、使用cmake构建库

先进入解压后的 opencv-4.2.0 文件夹,并且创建一个build文件,之后再进入build文件夹下进行 cmake:

cd opencv-4.2.0
mkdir build
cd build


开始 cmake,cmake是为了链接后面make要用到的相关库及其定义编译什么版本的opencv,比如cpu版本或者gpu(cuda)版本,比如opencv中的dnn网络就需要用到gpu版本的opencv。正常情况下我们编译cpu版本的即可,而且gpu版本的编译可能会碰到许多cuda链接的错误。需要根据你的实际情况,对下面的指令参数进行修改:

  • 选择编译cpu版本的opencv(推荐):
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv_4.2.0 -D OPENCV_EXTRA_MODULES_PATH=/home/wsy/OpenCV/OpenCV-4.2.0/opencv_contrib-4.2.0/modules -D OPENCV_GENERATE_PKGCONFIG=ON -D OPENCV_ENABLE_NONFREE=True ..
  • 或者 选择编译gpu版本的opencv:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv_4.2.0 CUDA_ARCH_BIN='7.5' -D WITH_CUDA=ON -D WITH_QT=ON -D OPENCV_GENERATE_PKGCONFIG=ON -D OPENCV_EXTRA_MODULES_PATH=/home/wsy/OpenCV/OpenCV-4.2.0/opencv_contrib-4.2.0/modules -D INSTALL_C_EXAMPLES=ON -D BUILD_EXAMPLES=ON ..

注意事项:

  1. OpenCV 4.2.0支持使用CUDA对DNN模块进行加速计算,所以这里配置CUDA;在此之前需要自行配置好NVIDIA显卡的驱动与CUDA。
  2. 其中CUDA_ARCH_BIN=‘7.5’ 指的是显卡的计算能力。可以参考:NVIDA CUDA显卡计算能力对应表:https://blog.csdn.net/qq_42683011/article/details/113825841
  3. CMAKE_INSTALL_PREFIX 是opencv的安装地址 默认安装在 /usr/local/opencv_4.2.0
  4. CMAKE_BUILD_TYPE 是opencv安装的版本,Release和Debug两种可选,默认安装Release
  5. OPENCV_ENABLE_NONFREE 是否使用部分被申请了专利的算方法 这里选True的话就可以使用了
  6. OPENCV_GENERATE_PKGCONFIG 强烈建议开启这个 设置为ON, 因为opencv4默认不生成.pc文件,所以加上这句用于生成opencv4.pc文件,支持pkg-config功能。opencv4版本及以上 这里用ON

上面这种格式的指令在笔者的电脑上构建opencv-4.2.0、opencv-3.4.6都没有发现问题,应该对于opencv3和opencv4都能够构建成功。

但是在构建opencv2,比如opencv-2.4.9时,建议参考下面的指令进行构建:

cmake -D CMAKE_BUILD_TYPE=RELEASE \-D CMAKE_INSTALL_PREFIX=/usr/local/opencv_2.4.9 \-D WITH_CUDA=OFF \-D WITH_OPENGL=OFF \-D WITH_OPENCL=OFF \-D BUILD_JPEG=OFF \-D BUILD_PNG=OFF \-D BUILD_JASPER=OFF \-DBUILD_OPENEXR=OFF \-D BUILD_TIFF=OFF \-D BUILD_ZLIB=OFF \-D WITH_FFMPEG=OFF \-D CMAKE_CXX_FLAGS="-std=c++11" \-D CMAKE_CXX_COMPILER=/usr/bin/g++-4.8 \-D CMAKE_C_COMPILER=/usr/bin/gcc-4.8 \..

四、使用make编译库

建议在make之前先查看CPU的核心数:

nproc

你可以根据你的核心数来调整make指令的参数,比如我的CPU核心数为16,则可以执行:(建议不用堆满)
(此处也是在那个build文件夹下进行的)

make -j15

在编译结束之后,执行:
(此处也是在那个build文件夹下进行的)

sudo make install

五、添加到系统环境变量

修改~/.bashrc或者~/.zshrc(用哪个终端就改哪个):

sudo gedit ~/.bashrc

加入如下的内容:

#OpenCV_4.2.0
export PKG_CONFIG_PATH=/usr/local/opencv_4.2.0/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/opencv_4.2.0/lib

加入上述内容后进行 source.

source ~/.bashrc

六、验证配置结果

任意目录创建一个test.cpp文件,写入如下内容:

#include "opencv2/opencv.hpp"using namespace cv;
using namespace std;int main( int argc, char** argv )
{cout << "OpenCV version : " << CV_VERSION << endl;cout << "Major version : " << CV_MAJOR_VERSION << endl;cout << "Minor version : " << CV_MINOR_VERSION << endl;cout << "Subminor version : " << CV_SUBMINOR_VERSION << endl;
}

使用命令行在其文件夹下执行

# 编译test.cpp程序,并生成可执行文件
g++ -std=c++11 test.cpp `pkg-config --libs --cflags opencv4` -o result# 执行可执行文件
./result

如果输出以下内容,即表明配置成功

OpenCV version : 4.2.0
Major version : 4
Minor version : 2
Subminor version : 0

到这里我们已经成功配置好了一个 opencv4.2.0,已经可以使用了。

七、多个OpenCV版本共存

在开发不同工程时可能会需要不同版本的OpenCV,因此在电脑上安装多个版本的OpenCV很有必要。成功的关键是安装到不同的路径,并在CMakeLists.txt中找到需要的版本。

CMakeLists.txt中可设置手动寻找OpenCV的指定路径,如下:

set(OpenCV_DIR /usr/local/opencv_4.2.0/lib/cmake/opencv4)
find_package(OpenCV 4 REQUIRED)

其中,设置在 set(OpenCV_DIR /usr/local/opencv_4.2.0/lib/cmake/opencv4) 的目的主要是:设置opencv路径的时候,找有OpenCVConfig.cmake文件的文件夹,在我的安装目录下,OpenCVConfig.cmake文件在上述的路径中找到了,因此添加这个路径。

如果不进行手动寻找OpenCV的指定路径的话,而只是自动寻找系统路径下配置的OpenCV的话,只需如下指令:
第一个表示自动寻找系统库里版本4以上的,第二个表示找系统库里的最低版本。

find_package(OpenCV 4 REQUIRED)
或者
find_package(OpenCV REQUIRED)

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

七-1 安装OpenCV到不同的路径

在上面的安装教程中,我们介绍的其实就是将各个版本的OpenCV安装到不同的路径,你可以继续根据上面的教程来安装其他的OpenCV版本。

七-2 添加到系统环境变量

修改~/.bashrc或者~/.zshrc(用哪个终端就改哪个):

sudo gedit ~/.bashrc

像下面这样加入新的内容:

#OpenCV_4.2.0
#export PKG_CONFIG_PATH=/usr/local/opencv_4.2.0/lib/pkgconfig
#export LD_LIBRARY_PATH=/usr/local/opencv_4.2.0/lib#OpenCV_4.5.5
#export PKG_CONFIG_PATH=/usr/local/opencv_3.4.6/lib/pkgconfig
#export LD_LIBRARY_PATH=/usr/local/opencv_3.4.6/lib#OpenCV_2.4.9
#export PKG_CONFIG_PATH=/usr/local/opencv_2.4.9/lib/pkgconfig
#export LD_LIBRARY_PATH=/usr/local/opencv_2.4.9/lib

新加入OpenCV版本或者暂时不适用的OpenCV版本的建议注释掉。

七-3 切换OpenCV的版本

在上面我们把新版本OpenCV添加到系统环境变量时,都加上了注释,因此你可以通过去掉注释来切换OpenCV的版本,比如我们需要使用OpenCV_2.4.9,就可以把上面的内容修改为:

#OpenCV_4.2.0
#export PKG_CONFIG_PATH=/usr/local/opencv_4.2.0/lib/pkgconfig
#export LD_LIBRARY_PATH=/usr/local/opencv_4.2.0/lib#OpenCV_3.4.6
#export PKG_CONFIG_PATH=/usr/local/opencv_4.5.5/lib/pkgconfig
#export LD_LIBRARY_PATH=/usr/local/opencv_4.5.5/lib#OpenCV_2.4.9
export PKG_CONFIG_PATH=/usr/local/opencv_2.4.9/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/opencv_2.4.9/lib

七-4 测试切换的效果

每次切换后,都需要更新~/.bashrc 或者 ~/.zshrc

source ~/.bashrc

查询OpenCV版本(也可以使用上面安装OpenCV时的测试代码)。
注意: 但是我这里用这个命令只能查询到之前系统就自带的opencv3.2.0,无法查询到opencv4.2.0,所以猜想可能是一些动态链接没设置好,但是上面配置的内容不影响代码里调用和使用opencv4.2.0

pkg-config --modversion opencv

《OpenCV》配置多个C++版本的opencv(Ubuntu18.04)相关推荐

  1. 低CUDA算力显卡用上高版本pytorch(ubuntu18.04源码编译特定版本pytorch(v1.10.0))

    低CUDA算力显卡用上高版本pytorch(ubuntu18.04源码编译特定版本pytorch(v1.10.0)) 一 电脑配置 二 正常情况下源码编译步骤 三 我的编译过程及出现的问题 首先 安装 ...

  2. windows中VS卸载opencv配置,重新安装其他版本

    1.找到工程的属性管理器,电机Debug64和Release64下面的 包含目录和库目录,删掉其原由配置的oepncv路径: 找到链接器中的附加依赖项,删掉原有的配置:

  3. vs python opencv配置_OPENCV入门教程二:opencv+VS2015开发环境配置

    在该cpp文件中输入一下代码 #include #include #include #include #include using namespace cv; using namespace std; ...

  4. 【Linux配置遇到的问题及解决】ubuntu18.04 屏幕亮度无法调节解决方案

    今天刚在闲置的笔记本上将原来的win10重装成了ubuntu系统.在我写这些文字时ubuntu官网放出的最新版本是18.04.在装完后把玩的时候发现屏幕的亮度没有地方调节,右上角原本应该有一个小太阳的 ...

  5. opencv配置(转)

    1. 下载安装Opencv,去官网http://opencv.org/即可下载最新版本的Opencv,此处用的是Opencv 2.4.10 安装时傻瓜式的,最新版本的安装就是相当于解压到你指定的安装目 ...

  6. Opencv配置VS2010,配置成功后如何成功使用完成vs调用opencv库

    原文引用地址: http://blog.csdn.net/scottly1/article/details/40978625 1. 下载安装Opencv,去官网http://opencv.org/即可 ...

  7. 虚拟机+Ubuntu18.04+ORB_SLAM3+ROS环境配置(配置环境的过程以及途中出现的错误,解决方法)

    前提概要:因为导师的科研安排,需要做三维重建,并基于Jeston的硬件平台来完成,由于板子还没有到(应该说报销的费用还没到,没钱买QAQ),所以先用虚拟机模拟配置一下环境.写这篇文章也是为了板子到了以 ...

  8. ubuntu18.04配置ORB-SLAM3(包含ROS)完整版教程

    ORB_SLAM3安装教程 ORB_SLAM3安装准备 1.C++11 or C++0x Compiler 2.Pangolin ==**出现的问题**== 3.OpenCV安装 4.Eigen安装 ...

  9. ubuntu18.04系统安装+基本环境配置【原创】

    平台信息: PC:ubuntu18.04.i5.七彩虹GTX1060显卡.固态硬盘.机械硬盘 作者:庄泽彬(未经允许,请勿转载) 说明:在原本的电脑买一个独立显卡,装上去之后,出了各种问题,虽然后面勉 ...

最新文章

  1. 2017-06-14 Linux 添加密钥key
  2. XPath学习:轴(13)——namespace
  3. kido机器人没反应_机器人不能钩的三个英雄,章鱼妈上榜,钩中图四我方直接团灭!...
  4. [Active Learning] Multi-Criteria-based Active Learning
  5. QTP自动化测试从零基础到精通进阶(脚本测试、VBS语法、描述性编程、测试框架)...
  6. SpringCloud实战(四)Sentinel自定义降级异常实战
  7. java虚拟机内存存储一个对象_java虚拟机在java堆中对象内存分配、布局、访问
  8. C++最好的图形库是什么?
  9. 锂电池的充电原理以及快充原理
  10. 零基础学 Python(17):if 条件语句
  11. oracle里的ols机制,[Oracle] 数据库安全之 - Oracle标签安全(OLS)
  12. 拼多多商家推广常见问题解答!
  13. python自动点赞软件_python requests 简单实现易班登录,自动点赞,评论,发表
  14. 梁宁《产品思维 30 讲》 笔记
  15. 基于神经网络和小波变换的癫痫脑电诊断比较
  16. python3爬虫----人人贷散标用户信息爬取
  17. 记录安装Cytoscape的过程
  18. 向何志强学习什么(母校学报)
  19. 凹凸贴图与法线贴图的区别
  20. Spring Boot 配置 MySQL 数据库

热门文章

  1. C++ 多线程:std::future
  2. 51nod 2621 树上距离 (倍增+ LCA 模板)
  3. 助力中小商家快速成长,财报显示京东为实体经济注入强劲动能
  4. 【单选题】为了侵入用屏蔽予网体系结构保护的内部网络,侵袭者必须要通过
  5. Linux_WebShell:GateOne Docker方式安装与使用
  6. MAC 添加路由(Route)
  7. android activity的跳转,Android Activity跳转方式总结分享
  8. 百度天天快照知识宝典
  9. 第十三届蓝桥杯javac组决赛准备
  10. 我与Java的故事(一次编写,“终生”运行)