ubuntu16.04下opencv3.4.1的安装及测试(含ippicv离线配置过程)

(PS:由于项目需求,要复现ORB-SLAM3开源算法。该算法需配置opencv3的环境。在这里记录下本人的详细实现过程)

目录

  • 1 环境
  • 2 opencv安装过程
    • 2.1 opencv下载及解压
    • 2.2 相关工具和库的安装
    • 2.3 cmake一次
    • 2.4 编译(build)和安装(install)
    • 2.5 opencv环境配置
    • 2.6 opencv测试

1 环境

linux有两种安装方式:双系统和虚拟机。为了方便,本人使用VMware Workstation软件进行虚拟机安装。
本人linux系统版本为:ubuntu 16.04 LTS。

2 opencv安装过程

主要参考博客一: 在ubuntu16.04下安装opencv3.4.10(超详细测试成功).
但是该博主未提到ippicv下载失败,导致opencv编译失败的解决方法。本文进行了补充。

2.1 opencv下载及解压

(1)去github下载opencv,本教程选用的是opencv3.4.1。下载链接https://github.com/opencv/opencv/tree/3.4.1。
(2)将压缩包移动到你想安装的地方,点击鼠标右键进行解压;或者按“ctrl+alt+t”进入终端,并cd到压缩包位置,使用如下指令进行解压:

unzip opencv-3.4.1.zip

并cd,进入opencv文件中:

cd opencv-3.4.1

2.2 相关工具和库的安装

(1)安装cmake工具,依次执行2条指令:

sudo apt-get update
sudo apt-get install cmake

没有遇到博客一所说的QT5问题,就直接继续下一步。
(2)几个依赖库的安装,一条指令:

sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev

2.3 cmake一次

(1)创建编译目录(build)并进入:

mkdir build&& cd build

(2)cmake,指令为:

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

注意:执行上面指令后,终端会自动下载一个必需的ippicv加速库。
如果电脑配置了并进入外网,便会卡住一会进行下载;否则,不会卡住,而是报错提示ippicv_2017u3_lnx_intel64_general_20170822.tgz的加速库下载失败。如下:

ubuntu16.04下opencv3.4.1的安装及测试(含ippicv离线配置过程)_第1张图片
(3)离线下载ippicv_2017u3_lnx_intel64_general_20170822.tgz

因为不想配置,则需要离线下载ippicv库,很简单的两步。这里主要参考博客二:源码编译opencv卡在IPPICV。。。解决办法 ,该博客有个坑:因为是给的子文件路径,导致不能直接下载tgz文件,也没提示。本文也进行了补充。

本人的两步步骤如下:
1先去https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_20170822 离线下载opencv_3rdparty库,并提取出20170822.tgz文件,如下:
ubuntu16.04下opencv3.4.1的安装及测试(含ippicv离线配置过程)_第2张图片
2再将opencv源文件中/3rdparty/ippicv文件夹下的 ippicv.cmake中,第47行"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/" 改成下载的ippicv文件路径。比如本人改为"file:///home/jian/Downloads/",如此,便改成了离线编译ippicv文件。

最后重新执行一次上面的cmake指令,便完成了cmake。指令:

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

2.4 编译(build)和安装(install)

(1)编译的指令有两种。建议选择第1种:make –j$(nproc),可自动检测电脑的核心数,进行多线程编译(比如本人的nproc为2)。二选一指令:

make –j$(nproc)
make 

不同电脑性能,build花的时间不一样,一般在20-40分钟左右。开始编译的过程如下:
ubuntu16.04下opencv3.4.1的安装及测试(含ippicv离线配置过程)_第3张图片
因为离线下载了ippcv文件,所以build到69%那里直接通过了,最后完成100%:
ubuntu16.04下opencv3.4.1的安装及测试(含ippicv离线配置过程)_第4张图片
接着便可以install,进行opencv安装了,指令为:

sudo make install

效果如下:
在这里插入图片描述

2.5 opencv环境配置

上述步骤已经完成了源码编译,生成了系列库文件。接下来需要进行环境配置。
(1)添加库路径

sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'

(2)更新系统库

sudo ldconfig

(3)配置bash

sudo gedit /etc/bash.bashrc

在末尾粘贴如下两行代码

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig  
export PKG_CONFIG_PATH 

(4)保存,执行如下命令使得配置生效:

source /etc/bash.bashrc 

(5)更新

sudo updatedb  

(6)opencv版本检测

pkg-config --modversion opencv

输出如下,表示opencv已经完成了安装(撒花)。
在这里插入图片描述

2.6 opencv测试

(1)创建新文件,起名为example.cpp,粘贴如下代码:

#include "opencv2/core.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/highgui.hpp"
#include <iostream>

using namespace cv;
using namespace std;

int main()
{
    cout << "OpenCV功能测试,版本: " << CV_VERSION << endl;
    Mat image=Mat(360,480,CV_8UC3,CV_RGB(255,0,0));//初始化红色图片
    namedWindow("Sample",0);
	imshow("Sample", image);
	    
    while(1)
    {
        if(waitKey(0)==27)//ubuntu中,waitkey的int输入好像无效,这里用while(1)循环进行暂停
    		break;
    }
    return 0;
}

(2)编译cpp文件。
在cpp路径下打开终端,输入指令:

g++ `pkg-config opencv --cflags` example.cpp  -o example `pkg-config opencv --libs`

便可生成example.o可执行文件,之后执行:

./example

便可执行程序,输出下图所示的红色图片:
ubuntu16.04下opencv3.4.1的安装及测试(含ippicv离线配置过程)_第5张图片

原创不易。有用请随手点赞+关注,谢谢!

(本人小硕士生一枚,主要研究方向包括:计算机视觉、三维重建、机器人等)

你可能感兴趣的:(Opencv,C++,linux,opencv,cmake)