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

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

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

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

OpenCV

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

Q&A

1回答

3375閲覧

opencv・プロシージャエントリポイントが見つかりませんというエラ

kissshot326

総合スコア0

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

OpenCV

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

0グッド

0クリップ

投稿2020/05/15 06:52

opencvを勉強中で質問させていただきます。opencvの追加モジュールをインストールしてsift,surfを用いたサンプルプログラムを実行したいのですがつぎのようなエラーが解決できずに手詰まりとなっています。知恵のある方何かお力添えいただけないでしょうか。

環境は
windows10
visual studio 2019
opencv4.1.2
です
イメージ説明

ソースコードは以下の通りです。ビルドは問題なく通るのですがデバック実行時にエラーとなります。

C++

1コード 2#include <opencv2/opencv.hpp> 3#include <opencv2/xfeatures2d.hpp> 4#include <opencv2/xfeatures2d/nonfree.hpp> // SIFT・SURFモジュール用 5 6void FeatureMatching(void) 7{ 8 // 画像の読み込み 9 cv::Mat img1 = cv::imread("C:\opencv_build\sources\samples\data\02-02-a.jpg"); 10 cv::Mat img2 = cv::imread("C:\opencv_build\sources\samples\data\02-02-b.jpg"); 11 12 // 特徴点抽出 13 auto detector = cv::xfeatures2d::StarDetector::create(); 14 std::vector<cv::KeyPoint> keypoint1, keypoint2; 15 detector->detect(img1, keypoint1); 16 detector->detect(img2, keypoint2); 17 18 // 特徴記述 19 auto extractor = cv::xfeatures2d::FREAK::create(); 20 cv::Mat descriptor1, descriptor2; 21 extractor->compute(img1, keypoint1, descriptor1); 22 extractor->compute(img2, keypoint2, descriptor2); 23 24 // マッチング 25 auto matcher = cv::DescriptorMatcher::create("BruteForce-L1"); 26 std::vector<cv::DMatch> dmatch; 27 if (true) 28 { 29 // クロスチェックする場合 30 std::vector<cv::DMatch> match12, match21; 31 matcher->match(descriptor1, descriptor2, match12); 32 matcher->match(descriptor2, descriptor1, match21); 33 for (size_t i = 0; i < match12.size(); i++) 34 { 35 cv::DMatch forward = match12[i]; 36 cv::DMatch backward = match21[forward.trainIdx]; 37 if (backward.trainIdx == forward.queryIdx) 38 dmatch.push_back(forward); 39 } 40 } 41 else 42 { 43 // クロスチェックしない場合 44 matcher->match(descriptor1, descriptor2, dmatch); 45 } 46 47 // マッチング結果の表示 48 cv::Mat out; 49 cv::drawMatches(img1, keypoint1, img2, keypoint2, dmatch, out); 50 cv::imshow("matching", out); 51 while (cv::waitKey(1) == -1); 52} 53 54int main(void) { 55 FeatureMatching(); 56 return 0; 57}

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

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

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

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

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

guest

回答1

0

xfeatures2dを含むライブラリを見つけられていない状態なんだと思います。
パッと思いつくのは、ライブラリがある場所へのパスが設定されていないか、ビルドの設定でライブラリ名を指定しないといけないのにされていないとかですかね。

投稿2020/05/16 05:53

hytNInE

総合スコア133

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

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

kissshot326

2020/05/16 12:49

回答ありがとうございます。現在ライブラリのパスはopencv412d.libのディレクトリのみ追加しているのですが、他にも必要でしょうか。追加のライブラリはopencv_world412d.lib意外に必要ですか。
hytNInE

2020/05/16 14:01

問題になっているやつは、opencv_contribに含まれているものであってますか? git(https://github.com/opencv/opencv_contrib)のReadMeを見ると、下の方にある項目8に to run, linker flags to contrib modules will need to be added to use them in your code/IDE. For example to use the aruco module, "-lopencv_aruco" flag will be added.って書いてあるから、ライブラリの指定は必要な気がします。 ここに書いてあるopencv_arucoは例なのでそれではなく、今回必要そうなのは「opencv_xfeatures2d」あたりでしょうか。パスの指定もこのライブラリがある場所を指定すれば良いと思います。 なお、自分はwindowsじゃなかったりと環境が違うので、合っているかどうかの確認は取れていないです。自分だったらその辺りから調べていくといった感じです。
kissshot326

2020/05/17 11:11

ありがとうございます。調べていく姿勢参考になります。 contribのxfeatures2dのヘッダーファイル等を含むディレクトリは指定したのですがうまくいきませんでした。 opencv_xfeature2d.libというファイルがあるということでしょうか。そのようなファイルが存在しないのでインストールの時点で問題があったのでしょうか...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問