环境:ubuntu14.04 + ACG_localizer_v_1_2_2
ACG_localizer 是 RWTH Aachen University 的Torsten Sattler 提出并实现的基于SFM进行图片视觉定位的开源代码,更加详细的内容见官网及代码Readme里的论文。
官网:
https://www.graphics.rwth-aachen.de/software/image-localization
github上的相关网站:
https://github.com/hanjianwei/ACG-Localizer
https://github.com/pangfumin/ACG-localizer
最初我在ubuntu14.04上安装成功过,后来我想移植到ubuntu16.04,但是因为没有记录,好多步骤都忘了,这是我决定记录下来的目的。在ubuntu16.04安装的时候总是会报错:
/usr/local/lib/liblapack.a(xerbla.o):在函数‘xerbla_’中: xerbla.f:(.text+0x49):对‘_gfortran_st_write’未定义的引用
......
调试了一天也没有能解决这个问题(自己好菜),所以强烈建议大家不要在ubuntu16.04上安装,大神除外!
1、ACG_localizer 源码下载
我是从官网下载的,网址见上;
点击图中here,就可以了
安装前一定要仔细的看Readme!!!
2、依赖库安装
要安装的依赖库主要有ann_1.1.2、flann-1.6.11、GMM、lapack
2.1 ann_1.1.2安装(注意这里加上了版本,就是说必须是指定版本,其他的版本不可以)
下载网址:http://www.cs.umd.edu/~mount/ANN/
下载之后解压,然后进入目录,使用命令:
make linux-g++
ps: ubuntu下g++报错 g++:command not found解决办法
输入命令 sudo apt-get install build-essential
2.2 flann-1.6.11安装
这个我实在找不到原来是在哪里下载的了,https://github.com/mariusmuja/flann上没有找到相应版本 ,CSDN上下载的内容是不能用的,https://github.com/pangfumin/ACG-localizer上的文件夹可以试一试(我没试),这里我会给出自己百度网盘的链接
链接:https://pan.baidu.com/s/1aM0s9GX-Ax8Ti7aHWM9ZIg
提取码:yt49
然后执行命令:
mkdir build
cd build
cmake ..
make
2.3 GMM安装
sudo apt-get install libgmm++-dev
2.4 lapack安装
同样我在百度网盘也存了一份lapack-3.4.2的文件夹,然后使用命令:
mkdir build
cd build
cmake ..
make
sudo make install
注意:只安装lapack,后面cmake的时候还是提醒找不到lapack,还需要安装下面两个库:
sudo apt-get install libblas-dev
sudo apt-get install libf2c2-dev
3、编译ACG_localizer
3.1 编译之前,需要将flann_modification文件夹中的kmeans_index.h复制替换到flann-1.6.11文件夹src/cpp/flann/algorithms内,然后将flann重新编译
3.2 修改ACG_Localizer/cmake内的FindANN、FindFLANN关于库文件和头文件的路径,比照着之前的路径写就行,路径上面就是写的要查的头文件和库文件的名称,其他Find文件都不用修改
3.3 编译
cd SOME_DIRECTORY/ACG_Localizer
mkdir build
cd build
cmake .. (当不报缺什么库的时候进行下一步)
make
报错信息:
我这里的主要错误信息出现在:acg_localizer_active_search.cc内,增加下图中标红部分
报错信息:cannot convert ‘ANNcoord* {aka double*}’ to ‘float*’ in assignment
(1091行)
报错信息:invalid conversion from ‘float**’ to ‘int’
(1103行)
然后就顺利编译成功了!还没有仔细的看这个程序,后续会不断更新的。