SLAM (Simultaneous Localization and Mapping)技術の一つとして、SfM (Structure from Motion) があります。そして、そのライブラリがOpenCVにあり、そのサンプルコードtrajectory_reconstrucion.cppを試してみました。
【参照URL】
https://qiita.com/ChaoticActivity/items/178d23508b92a09e59ea
https://qiita.com/fujin/items/d7ec313a33f9195bd2e0
必要なライブラリをインストールしてからOpenCVをインストールして、サンプルコードを次のコマンドラインでビルドしようとしたら、下記エラーが生じました。
【コマンドライン】
C++
1g++ trajectory_reconstruction.cpp -std=c++11 -O4 -Wall -I/usr/local/include -I/usr/include/eigen3 -DCERES_FOUND=1 -L/usr/local/lib `pkg-config --libs opencv` -o trajectory_reconstruction
【エラーメッセージ】
C++
1/tmp/ccmgKuHS.o: 関数 `main' 内: 2trajectory_reconstruction.cpp:(.text.startup+0x2ad): `cv::sfm::reconstruct(cv::_InputArray const&, cv::_OutputArray const&, cv::_OutputArray const&, cv::_InputOutputArray const&, cv::_OutputArray const&, bool)' に対する定義されていない参照です 3collect2: error: ld returned 1 exit status 4Makefile3:16: ターゲット 'trajectory_reconstruction' のレシピで失敗しました 5make: *** [trajectory_reconstruction] エラー 1
ちなみに、eigen3とCERESのインストールは成功しています。
サンプルプログラムは他に2つありますが、同じ結果です。
どなたか、原因と対策のわかる方よろしくお願いします。
環境は次のとおりです。
・ubuntu16.04
・OpenCV3.4
・C++11
(追記)
OpenCVをビルドしたときのcmakeコマンドラインです。
c++
1cmake -D CMAKE_BUILD_TYPE=Release -D BUILD_DOCS=OFF -D BUILD_EXAMPLES=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_TESTS=OFF -D CMAKE_INSTALL_PREFIX=/usr/local/opencv4.1 -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules ..
コード
回答1件
あなたの回答
tips
プレビュー