2016年1月7日木曜日

ubuntu 14.04上でsfmを試してみた その2

昨日の続き

Vizの事前準備

terminalで
sudo apt-get -y install libvtk5-dev
を実行し、再度OpenCVをビルドする

これでサンプルがコンパイルできるようになると思った。

罠2

通常
g++ -o $1 $1.cpp `pkg-config --cflags opencv` `pkg-config --libs opencv`
を記載したshell scriptを呼び出してコンパイルしているが、今回

trajectory_reconstruccion.cppをコンパイルすると

#include <opencv2/sfm.hpp>
で呼び出す、sfm.hppの依存headerで

#include <Eigen/Core>

が見つからないとの警告が出る

対処

コンパイル用のスクリプトファイルに
-I/usr/include/eigen3
を追加

罠3

149行の reconstruct でそんな関数はメンバーにいないとのエラーが

reconstruct は、 opencv_contrib-3.1.0/modules/sfm/include/opencv2/sfm/reconstruct.hpp に確かに定義されている。

散々悩んでopencv2/sfm.hppを見たところ

#if CERES_FOUND
#include <opencv2/sfm/reconstruct.hpp>
#include <opencv2/sfm/simple_pipeline.hpp>
#endif

と定義されており、フラグを設定していないと読み込まれない

対処

コンパイル用のスクリプトファイルに
-DCERES_FOUND=1
を追加

これでようやく trajectory_reconstruccion.cpp のコンパイルができるようになった。

最終スクリプト
g++ -o $1 $1.cpp `pkg-config --libs opencv` -I/usr/local/include -I/usr/include/eigen3 -DCERES_FOUND=1

 

サンプルの実行

terminlで以下を実行すると
./trajectory_reconstruccion desktop_tracks.txt 1914 640 360

----------------------------

Reconstruction:
============================
Estimated 3D points: 26
Estimated cameras: 239
Refined intrinsics:
[1018.232765405989, 0, 601.2589725784402;
 0, 1018.232765405989, 360.3785586127441;
 0, 0, 1]

3D Visualization:
============================
Recovering points  ... [DONE]
Recovering cameras ... [DONE]
Rendering Trajectory  ...
Press:                      
 's' to switch the camera pov
 'q' to close the windows

とメッセージが表示され下記画像が表示される


感想

Vizで画面でマウスのドラッグで視点を変更することができるが、思うような構図にできない

0 件のコメント:

コメントを投稿