(PS:由于项目需求,要复现ORB-SLAM3开源算法。该算法需配置opencv3的环境。在这里记录下本人的详细实现过程)
linux有两种安装方式:双系统和虚拟机。为了方便,本人使用VMware Workstation软件进行虚拟机安装。
本人linux系统版本为:ubuntu 16.04 LTS。
主要参考博客一: 在ubuntu16.04下安装opencv3.4.10(超详细测试成功).
但是该博主未提到ippicv下载失败,导致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
(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
(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的加速库下载失败。如下:
(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文件,如下:
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 ..
(1)编译的指令有两种。建议选择第1种:make –j$(nproc),可自动检测电脑的核心数,进行多线程编译(比如本人的nproc为2)。二选一指令:
make –j$(nproc)
make
不同电脑性能,build花的时间不一样,一般在20-40分钟左右。开始编译的过程如下:
因为离线下载了ippcv文件,所以build到69%那里直接通过了,最后完成100%:
接着便可以install,进行opencv安装了,指令为:
sudo make install
上述步骤已经完成了源码编译,生成了系列库文件。接下来需要进行环境配置。
(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
(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
原创不易。有用请随手点赞+关注,谢谢!
(本人小硕士生一枚,主要研究方向包括:计算机视觉、三维重建、机器人等)