技术标签: 计算机视觉
Ubuntu20.04系统中视觉SLAM各种库的安装
——《视觉SLAM十四讲:从理论到实践》第二版
对于某些cmake工程,使用cmake-make方式进行编译安装,先建立build文件夹,再使用 cmake .. 对安装包进行分析,当找不到合适的安装教程类帮助时,可以根据分析的结果,看看缺少那些依赖,就装哪些,一直到没有缺少,或根据需要安装相应依赖,可能有些依赖库是非必要的,注意cmake时有的可能需要设置某些参数或root权限,接着make编译与make install安装。
mkdir build -> cd build -> cmake .. -> make -> sudo make install
CMake 指定安装目录,
方法一:使用 CMAKE_INSTALL_PREFIX 来指定 cmake -DCMAKE_INSTALL_PREFIX=/usr/local ..
方法二:修改cmake文件,加入:SET(CMAKE_INSTALL_PREFIX < install_path >) ,要加在 PROJECT(< project_name>)
1.Eigen3安装
Ubuntu20.04系统中,直接在终端输入以下命令即可安装Eigen最新版本(模板类Sophus要求Eigen3.3以上,笔者使用该命令安装的Eigen的版本是3.3.7-2,其它Ubuntu版本的系统,也可参考博客:视觉SLAM学习中各种库安装,通过在Eigen官网下载源码,使用cmake安装Eigen最新版。
sudo apt-get install libeigen3-dev
2.Sophus安装
Sophus,李代数库,由Strasdat维护,可通过以下命令从Github获取源码,默认是模板类,可直接通过cmake方式进行安装。
git clone http://github.com/strasdat/Sophus cd Sophus mkdir build cd build cmake .. make suod make install
在《视觉SLAM十四讲:从理论到实践》第一版中,使用的是非模板类Sophus,需在Sophus目录下使用以下命令回到非模板类Sophus的版本,再通过cmake方式安装。
git checkout a621ff
3.OpenCV3
首先在终端运行以下命令,安装OpenCV库的依赖项。其中前两条命令用于添加编码工具jasper( libjasper-dev)的软件源。
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main" sudo apt update sudo apt-get install build-essential qt5-default ccache libv4l-dev libavresample-dev libgphoto2-dev libopenblas-base libopenblas-dev doxygen openjdk-8-jdk pylint libvtk6-dev python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libopenexr-dev
然后从官网或Github下载OpenCV3系列安装包编译安装,(在Github下载对应版本的opencv_contrib扩展模块,笔者在Github上下载的opencv3.4.11和对应版本的opencv_contrib),分别进行解压,注意需要将opencv_contrib-3.4.11移动到opencv-3.4.11文件夹,在终端打开opencv-3.4.11q文件夹,通过cmake方式安装OpenCV。其中cmake命令的OPENCV_EXTRA_MODULES_PATH参数是opencv_contrib扩展模块的modules目录。
mkdir build cd build sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3 -D OPENCV_EXTRA_MODULES_PATH=/home/xvshilin/opencv-3.4.11/opencv_contrib-3.4.11/modules/ .. sudo make -j4 sudo make install sudo gedit ~/.bashrc //切换成 opencv3,根据安装路径,在文件末尾加上: export PKG_CONFIG_PATH=/usr/local/opencv3/lib/pkgconfig export LD_LIBRARY_PATH=/usr/local/opencv3/lib //切换成 opencv2,则在文件末尾加上: export PKG_CONFIG_PATH=/usr/local/opencv2/lib/pkgconfig export LD_LIBRARY_PATH=/usr/local/opencv2/lib // 也可参考下面 DBoW3 的 CMakeLists.txt 配置,使用cmake语句 set() set(OpenCV_DIR /usr/local/opencv2/share/OpenCV) find_package(OpenCV 2.4 REQUIRED) include_directories(SYSTEM ${OpenCV_INCLUDE_DIRS} /usr/local/opencv2/include) source ~/.bashrc // 使(在当前终端)即使生效 pkg-config –modversion opencv pkg-config –cflags opencv pkg-config –libs opencv
OpenCV2的安装,从官网下载源码,安装依赖项
sudo apt-get install build-essential libgtk2.0-dev libjpeg-dev libtiff4-dev libjasper-dev libopenexr-dev cmake python-dev python-numpy python-tk libtbb-dev libeigen2-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev libqt4-dev libqt4-opengl-dev sphinx-common texlive-latex-extra libv4l-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev
建立文件夹/usr/local/opencv2
cmake三连
mkdir build cd build cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv2 .. make sudo make install
make编译时出现以下错误时,参考这篇博客,由ffmpeg的版本问题引起。在最新版本的ffmpeg中对很多关键字进行了重命名,例如CODEC_FLAG_GLOBAL_HEADER就被重新命名为AV_CODEC_FLAG_GLOBAL_HEADER,因此以老版本ffmpeg开发的opencv无法编译。解决方法,装旧版本的ffmpeg或者修改opencv的源码。
In file included from /home/***/opencv-2.4.13.6/modules/highgui/src/cap_ffmpeg.cpp:45: /home/***/opencv-2.4.13.6/modules/highgui/src/cap_ffmpeg_impl.hpp: In function ‘AVStream* icv_add_video_stream_FFMPEG(AVFormatContext*, AVCodecID, int, int, int, double, int)’: /home/***/opencv-2.4.13.6/modules/highgui/src/cap_ffmpeg_impl.hpp:1484:21: error: ‘CODEC_FLAG_GLOBAL_HEADER’ was not declared in this scope; did you mean ‘AV_CODEC_FLAG_GLOBAL_HEADER’? 1484 | c->flags |= CODEC_FLAG_GLOBAL_HEADER; | ^~~~~~~~~~~~~~~~~~~~~~~~ | AV_CODEC_FLAG_GLOBAL_HEADER
解决方法是打开/opencv-2.4.13.6/modules/highgui/src/cap_ffmpeg_impl.hpp,在里最顶端添加
#define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22) #define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER #define AVFMT_RAWPICTURE 0x0020
顺利编译。
4.PCL点云库
5.Ceres优化库
源码下载
git clone https://github.com/ceres-solver/ceres-solver
依赖
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3.1.2 libgflags-dev libgoogle-glog-dev libgtest-dev
出现无法定位libcxsoarse3.1.2问题的解决方法:
sudo gedit /etc/apt/sources.list
将下面的源加入到sources.list
deb http://cz.archive.ubuntu.com/ubuntu trusty main universe
sudo apt-get update sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3.1.2 libgflags-dev libgoogle-glog-dev libgtest-dev
之后就是mkdir build -> cd build -> cmake .. -> make -> sudo make install ,安装之前可以使用 make test 进行测试,即
mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX=/usr/local/ceres .. nproc (查看cpu核心数,???) make make test sudo make install
6.g2o图优化库
sudo apt-get install qt5-qmake libqglviewer-dev-qt5 libsuitesparse-dev libcxsparse3.1.2 libcholmod-dev git clone https://github.com/RainerKuemmerle/g2o.git cd git mkdir build cmake -DCMAKE_INSTALL_PREFIX=/usr/local/g2o .. make sudo make install
7.DBoW3词袋模型库
词袋模型 DBoW2 DBoW3 FBoW Vocabulary_of_GSLAM
git clone https://github.com/rmsalinas/DBow3.git # 下载源文件 cd DBoW3 # 进入源文件夹 mkdir build cd build cmake -DUSE_CONTRIB=ON -DCMAKE_INSTALL_PREFIX=/usr/local/DBow3.. make -j4 sudo make install
使用DBoW3时,CMakeLists.txt的配置,头文件+库文件+链接
set( DBoW3_INCLUDE_DIRS "/usr/local/DBoW3/include" ) set( DBoW3_LIBS "/usr/local/DBoW3/lib/libDBoW3.so" ) target_link_libraries( 可执行文件名 ${DBoW3_LIBS} )
8.Pangolin
9.GTSAM
安装失败,待定
GTSAM is a library of C++ classes that implement smoothing and mapping (SAM) in robotics and vision, using factor graphs and Bayes networks as the underlying computing paradigm rather than sparse matrices.
GTSAM 是一个在机器人领域和计算机视觉领域用于平滑(smoothing)和建图(mapping)的C++类库。下载地址:GTSAM[Get Started]
官方网站:
[1] Eigen官方主页:http://eigen.tuxfamily.org/index.php?title=Main_Page[2] Sophus in github:http://github.com/strasdat/Sophus
[3] OpenCV官网:http://opencv.org
[4] PCL官网:http://pointclouds.org
[5] Ceres官网:http://ceres-solver.org
[6] Ceres in github:https://github.com/ceres-solver/ceres-solver
[7] G2O in github:https://github.com/RainerKuemmerle/g2o
[8] GTSAM :https://gtsam.org/
MySql中 limit 与 limit,offset连用的区别① select * from table limit 2,1;//含义是跳过2条取出1条数据,limit后面是从第2条开始读,读取1条信息,即读取第3条数据② select * from table limit 2 offset 1;//含义是从第1条(不包括)数据开始取出2条数据,limit后面跟的是2条数据,offset...
https://blog.csdn.net/u010381752/article/details/90295010安装dockeryum install docker安装gityum install git
1、双Camera算法供应商:由于算法是需要跟ISP配合的,所以算法和ISP是相辅相成的,想把算法做好,也得有好的ISP。做为主平台供应商,高通/联发科都有自己的ISP,所以也自己开发了双Camera算法。至于其算法好坏,还有待市场的检验。而作为Sensor供应商,Sony, Samsung, OV也在积极开发双摄算法,暂时也没有看到量产
描述:我们现在开发的项目中几乎都会有搜索的这个需求,就像我们平时用的百度,谷歌这些都是满足我们平时的搜索需求的。当然在我们的项目中我们不可能利用百度,谷歌的搜索来实现自己项目中的搜索的,这时我们就需要自己进行开发实现这项功能了。那么怎样实现呢,其实现在现在我们有很多成熟的搜索算法,不必自己去研究,只需要自己修改那些大神写的代码就Ok啦。言归正传,下面介入正题。搜索的功能我是用Lucene.Ne...
点赞再看,养成习惯,微信搜索【高级前端进阶】关注我。本文 GitHub https://github.com/yygmind 已收录,有一线大厂面试完整考点和系列文章,欢迎 Star。最近在学习的时候看到了 Markdown 代码 diff 高亮的效果,感觉挺有意思的。突然发现还有这么一个好玩的用法,然后我就想着整理一波 Markdown 的高级用法,下面是我整理的一些内容,如果还没用过 Markdown 这些技巧,快来试试吧。代码diff如果你做过代码 Code Review,对下面这种效果肯.
Hadoop Shell的基本操作:1.学习开启、关闭Hadoop2.学习在Hadoop中创建、修改、查看、删除文件夹及文件3.学习改变文件的权限及文件的拥有者4.学习使用shell命令提交job任务5.Hadoop安全模式的进入与退出
< template >段<!-- 新增信息template --><template> <div style="float:left;margin:5px 5px"> <el-button @click="getFileName" type="success">选择文件</el-button> <div style="float:left;margin:5px 5px"> <
今天看到的东西,记录下1、可以而且当然要删!最好搜索一下*.temp的文件,然后都删掉!最后编个批处理文件!让他每次开机都删不然你的机子会很慢而且占空间! 批处理文件名字为A.BAT(内容如下): del c:\windows\temp\*.* 再新建一个文本文件名字为b.txt y (文本文档中只有一个Y,再加一个回车)将这两个文件置于C:盘下再添加到启动项目中那每次
DescriptionData ConstraintSolution这道题很多人用FWT过了,毕竟题目名就这样…… 那我们另辟蹊径,想想矩阵乘法怎么做。 我们要确定F0的任何一项j对于Ft的任何一项k的系数。那么我们发现j转移至k的途中系数只与转移a^b的1的个数有关。所以我们发现这T次转移只是个填1的问题:现在有一个T行m列的矩阵,每一行你要填上若干个1,是的最后j转移至k。那我们发现对于一个
由于只能通过按钮标签来使用open-type="share",如果需要用标签 如:view。我们可以通过取巧的方式来实现此功能,button标签覆盖在原有的基础之上。通过按钮方式分享,注:open-type="share"属性只能通过button按钮使用。函数,小程序右上角三个点中就会出现转发,分享的功能。在methods中 定义。...
https://blog.csdn.net/pcf1995/article/details/80973600
ServletConfig 类是Servlet 程序的配置信息类。Servlet 程序和 ServletConfig 对象都是由 Tomcat 负责创建,我们负责使用。Servlet 程序默认是第一次访问的时候创建,ServletConfig 是每个 Servlet 程序创建时,就创建一个对应的 ServletConfig 对象。ServletConfig类的三大作用可以获取 Servlet 程序的别名 servlet-name 的值获取初始化参数 init-param获取 ServletCo