質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C++11

C++11は2011年に容認されたC++のISO標準です。以前のC++03に代わるもので、中枢の言語の変更・修正、標準ライブラリの拡張・改善を加えたものです。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Q&A

解決済

1回答

2800閲覧

opencv sfmのサンプルを試してみたらエラーが生じました

good_morning

総合スコア61

C++11

C++11は2011年に容認されたC++のISO標準です。以前のC++03に代わるもので、中枢の言語の変更・修正、標準ライブラリの拡張・改善を加えたものです。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

0グッド

0クリップ

投稿2020/02/12 20:04

編集2020/02/13 00:37

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 ..

コード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tachikoma

2020/02/12 22:53

opencvは自分でビルドしました?もしそうならsfmのモジュールが含まれてなかったん可能性が疑われるので、opencvのビルドオプションが残っていたら追記してもらえないでしょうか。
good_morning

2020/02/13 00:35

お返事が遅れまして大変申し訳ございません。質問に追記しました。
tachikoma

2020/02/13 03:55

自分でアプリをビルドできたわけではないので、あくまでオプションを見て気になった点を述べますが、opencvのインストールprefixが/usr/local/opencv4.1ならビルドオプションに-I/usr/local/opencv4.1/includeを入れないといけない気がしますね。
good_morning

2020/02/13 05:36

ありがとうごあいます。`-D CMAKE_INSTALL_PREFIX=/usr/local`にしたら動きました。実は、OpenCVはv3.4とv4.1があります。最近はもっぱらv4.1を使用していたので、v4.1を使ってうまく行かなかったので、急遽v3.4で同じことを実行しようとしたわけです。どうしてv4.1でできなくてv3.4でできるのかという疑問は残りますが、とりあえずv3.4でできるようになったことは嬉しい限りです。今後共よろしくお願いします。
tachikoma

2020/02/13 06:09

一応通ったのならひとまず回答として上のを載せておきますね。
guest

回答1

0

ベストアンサー

自分でアプリをビルドできたわけではないので、あくまでオプションを見て気になった点を述べますが、opencvのインストールprefixが/usr/local/opencv4.1ならビルドオプションに-I/usr/local/opencv4.1/includeを入れないといけない気がしますね。

投稿2020/02/13 06:09

tachikoma

総合スコア3601

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問