Pangolin是对OpenGL进行封装的轻量级的OpenGL输入/输出和视频显示的库。可以用于3D视觉和3D导航的视觉图,可以输入各种类型的视频、并且可以保留视频和输入数据用于debug.
可以在https://github.com/stevenlovegrove/Pangolin上下载Pangolin,终端使用如下的指令也OK:
git clone https://github.com/stevenlovegrove/Pangolin.git
在安装编译Pangolin之前还需要安装相关的依赖库文件;
在ubuntu环境下主要是OpenGL,ubuntu系统可以使用如下方式安装Pangolin:
* install dependency for pangolin (mainly the OpenGL):
sudo apt-get install libglew-dev
* compile and install pangolin
cd [path-to-pangolin]
mkdir build
cd build
cmake ..
make
sudo make install
然而对于centos系统,相应的库文件是什么呢??
搜寻网上很多教程,centos下对应的依赖分别是:
freeglut (相应官网 )
选择对应系统版本的安装文件,例如我的是centos7,选择如下:
最快的终端指令安装方式为:
yum install freeglut
或者,将安装包下载下来安装,
到下载的目录下运行指令安装:
sudo rpm -ih freeglut-3.0.0-8.el7.x86_64.rpm
libGLEW (相应 官网)
选择对应系统版本的安装文件,例如我的是cetos7,选择如下:
可以在终端用指令下载与安装:
yum install libGLEW
或者到下载的目录下运行指令安装:
sudo rpm -ih libGLEW-1.10.0-5.el7.x86_64.rpm
libglew-dev (相应官网)
这个库目前我只看到有centos6的,没有高版本的,不知道是否对centos7支持,先下载下来试试(以下证明果然行不通!!!);
可以直接用指令下载安装,不过官网指出需要先创建个文件/etc/yum.repos.d/linuxtech.repo;其内容如下:
[linuxtech]
name=LinuxTECH
baseurl=http://pkgrepo.linuxtech.net/el6/release/
enabled=1
gpgcheck=1
gpgkey=http://pkgrepo.linuxtech.net/el6/release/RPM-GPG-KEY-LinuxTECH.NET
然后运行指令:
yum install libglew-devel
或者将安装文件下载下来,我下的是libglew-devel-1.7.0-1.el6.x86_64.rpm
然后用如下指令安装:
sudo rpm -ih libglew-devel-1.7.0-1.el6.x86_64.rpm
提示缺少依赖库文件,如下:
然后我Google了下,发现这个其实有centos7版本的,地址https://pkges.org/download/glew-devel
地址应该为:https://pkgs.org/download/glew-devel 多谢读者纠正!
选择centos7的下载,文件名为:glew-devel-1.10.0-5.el7.x86_64.rpm
然后用如下指令安装:
sudo rpm -ih glew-devel-1.10.0-5.el7.x86_64.rpm
安装成功(万恶的资源受限,只能FQ)
现在cd 到Pangolin下载的解压目录下,
创建个build, cd到这个build中,然后cmake ..下
[chensq@localhost build]$ cmake ..
-- The C compiler identification is GNU 4.8.5
-- The CXX compiler identification is GNU 4.8.5
-- Check for working C compiler: /bin/cc
-- Check for working C compiler: /bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /bin/c++
-- Check for working CXX compiler: /bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
Build type not set (defaults to release)
-DCMAKE_BUILD_TYPE=Debug for debug
-- Found OpenGL: /usr/lib64/libGL.so
-- Found GLEW: /usr/lib64/libGLEW.so
-- Found PkgConfig: /usr/local/bin/pkg-config (found version "0.29")
-- Could NOT find WAYLAND_CLIENT (missing: WAYLAND_CLIENT_LIBRARIES WAYLAND_CLIENT_INCLUDE_DIR)
-- Could NOT find WAYLAND_SERVER (missing: WAYLAND_SERVER_LIBRARIES WAYLAND_SERVER_INCLUDE_DIR)
-- Could NOT find WAYLAND_EGL (missing: WAYLAND_EGL_LIBRARIES WAYLAND_EGL_INCLUDE_DIR)
-- Could NOT find WAYLAND_CURSOR (missing: WAYLAND_CURSOR_LIBRARIES WAYLAND_CURSOR_INCLUDE_DIR)
-- Could NOT find WAYLAND (missing: WAYLAND_LIBRARIES WAYLAND_INCLUDE_DIR)
-- Eigen Found and Enabled
-- libdc1394 Found and Enabled
-- V4L Found and Enabled
-- Performing Test HAVE_FFMPEG_MAX_ANALYZE_DURATION
-- Performing Test HAVE_FFMPEG_MAX_ANALYZE_DURATION - Failed
-- Performing Test HAVE_FFMPEG_AVFORMAT_ALLOC_OUTPUT_CONTEXT2
-- Performing Test HAVE_FFMPEG_AVFORMAT_ALLOC_OUTPUT_CONTEXT2 - Failed
-- Performing Test HAVE_FFMPEG_AVPIXELFORMAT
-- Performing Test HAVE_FFMPEG_AVPIXELFORMAT - Success
-- ffmpeg Found and Enabled
-- libpng Found and Enabled
-- libjpeg Found and Enabled
-- libtiff Found and Enabled
然后 make
如果make时到了23% 就报了一大堆错误的话,建议换个Pangolin的源进行安装,有博主反应最新的源有些问题,如果你make没有成功,目前换源有两个解决方法:
其中一个源还是stevenlovegrove的,不过下载个老版本的,选择0.5,如下图:
还有一个源是,git clone https://github.com/zzx2GH/Pangolin.git (参考博客https://blog.csdn.net/zzu_seu/article/details/84866858 )
基于换源后,
如果make中出现如下错误:
/bin/ld: /usr/local/lib/libpython3.6m.a(abstract.o): relocation R_X86_64_32S against `_Py_NotImplementedStruct' can not be used when making a shared object; recompile with -fPIC
错误信息非常明白,就是无法生成动态库,需要使用 -fPIC
参数来重新编译 Python。有博主就重新编译安装了下(参考);
其实我用的python默认是从anaconda3/bin下的python进去的,而linux系统自带的2.7版本的python在usr/bin/python下
就是说在make过程中没有找到libpython3.6m.a,有博客说直接找到这个文件,然后拷贝到/usr/lib/,/usr/lib64/, /usr/local/lib64/,(参考:未加载到libpython3.5m.so.1.0的解决办法, 未加载libpython3.6m.so.1.0的办法)这个方法我还没尝试,应该可行~
我的方法是以下载个python3.6.5的安装源文件,然后,解压,进入解压文件,按照以下指令安装了下:
./configure --prefix=/usr/local/python3 --enable-shared CFLAGS=-fPIC
make && sudo make install
源文件在/home/chensq/Downloads/Python-3.6.5 这个目录下,这个目录下有相应的动态库和python执行文件;
那么索性在cmake Pangolin的时候,将python强行指定到这个路径就行~
##切到Pangolin目录下
cd /home/chensq/Downloads/slambook2-master/3rdparty/Pangolin-0.5
##将原来的build文件夹删除,重新cmake
rm -rf build
mkdir build
cd build
##强行指定python的路径
cmake -D PYTHON_EXECUTABLE=/home/chensq/Downloads/Python-3.6.5/ ..
##然后make 就成功了~
make
sudo make install
参考:
https://blog.csdn.net/qq_32627687/article/details/81105706