7

OpenCV からチュートリアルの例の 1 つを実行しようとしています。これは、Flann ベースのキー ポイント マッチングを使用して既知のオブジェクトを見つけることです。コードはFeatures2D + Homography で見つけることができ、既知のオブジェクトを見つけることができます。

「ライブラリをリンクしましたか?」と聞かれると思います。または同様の質問。はい、ほぼすべてのライブラリを利用するさまざまな例で、OpenCV を 3 週間使用しています。そして今日まで何の問題もありませんでした。

そこで、これらのライブラリの依存関係を Visual Studio のリンカー入力設定に追加しました。インクルードディレクトリも正常に機能しています。

C:\OpenCV2.4\lib\opencv_core242d.lib
C:\OpenCV2.4\lib\opencv_highgui242d.lib
C:\OpenCV2.4\lib\opencv_video242d.lib
C:\OpenCV2.4\lib\opencv_ml242d.lib
C:\OpenCV2.4\lib\opencv_legacy242d.lib
C:\OpenCV2.4\lib\opencv_imgproc242d.lib
C:\OpenCV2.4\lib\opencv_objdetect242d.lib
C:\OpenCV2.4\lib\opencv_flann242d.lib
C:\OpenCV2.4\lib\opencv_nonfree242d.lib
C:\OpenCV2.4\lib\opencv_calib3d242d.lib

私が得たエラーはリンカーエラーです。フランの関数を解決できません。

1>------ Build started: Project: flannMatch, Configuration: Debug Win32 ------
1>flannMatch.obj : error LNK2019: unresolved external symbol "void __cdecl cv::drawMatches(class cv::Mat const &,class std::vector<class cv::KeyPoint,class std::allocator<class cv::KeyPoint> > const &,class cv::Mat const &,class std::vector<class cv::KeyPoint,class std::allocator<class cv::KeyPoint> > const &,class std::vector<struct cv::DMatch,class std::allocator<struct cv::DMatch> > const &,class cv::Mat &,class cv::Scalar_<double> const &,class cv::Scalar_<double> const &,class std::vector<char,class std::allocator<char> > const &,int)" (?drawMatches@cv@@YAXABVMat@1@ABV?$vector@VKeyPoint@cv@@V?$allocator@VKeyPoint@cv@@@std@@@std@@01ABV?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@4@AAV21@ABV?$Scalar_@N@1@4ABV?$vector@DV?$allocator@D@std@@@4@H@Z) referenced in function _main
1>flannMatch.obj : error LNK2019: unresolved external symbol "public: void __thiscall cv::DescriptorMatcher::match(class cv::Mat const &,class cv::Mat const &,class std::vector<struct cv::DMatch,class std::allocator<struct cv::DMatch> > &,class cv::Mat const &)const " (?match@DescriptorMatcher@cv@@QBEXABVMat@2@0AAV?$vector@UDMatch@cv@@V?$allocator@UDMatch@cv@@@std@@@std@@0@Z) referenced in function_main
1>flannMatch.obj : error LNK2019: unresolved external symbol "public: __thiscall cv::FlannBasedMatcher::FlannBasedMatcher(class cv::Ptr<struct cv::flann::IndexParams> const &,class cv::Ptr<struct cv::flann::SearchParams> const &)" (??0FlannBasedMatcher@cv@@QAE@ABV?$Ptr@UIndexParams@flann@cv@@@1@ABV?$Ptr@USearchParams@flann@cv@@@1@@Z) referenced in function _main
1>flannMatch.obj : error LNK2019: unresolved external symbol "public: void __thiscall cv::DescriptorExtractor::compute(class cv::Mat const &,class std::vector<class cv::KeyPoint,class std::allocator<class cv::KeyPoint> > &,class cv::Mat &)const " (?compute@DescriptorExtractor@cv@@QBEXABVMat@2@AAV?$vector@VKeyPoint@cv@@V?$allocator@VKeyPoint@cv@@@std@@@std@@AAV32@@Z) referenced in function _main
1>flannMatch.obj : error LNK2019: unresolved external symbol "public: void __thiscall cv::FeatureDetector::detect(class cv::Mat const &,class std::vector<class cv::KeyPoint,class std::allocator<class cv::KeyPoint> > &,class cv::Mat const &)const " (?detect@FeatureDetector@cv@@QBEXABVMat@2@AAV?$vector@VKeyPoint@cv@@V?$allocator@VKeyPoint@cv@@@std@@@std@@0@Z) referenced in function _main
1>flannMatch.obj : error LNK2019: unresolved external symbol "public: virtual __thiscall cv::DescriptorMatcher::~DescriptorMatcher(void)" (??1DescriptorMatcher@cv@@UAE@XZ) referenced in function "public: virtual __thiscall cv::FlannBasedMatcher::~FlannBasedMatcher(void)" (??1FlannBasedMatcher@cv@@UAE@XZ)
1>flannMatch.obj : error LNK2019: unresolved external symbol "public: virtual __thiscall cv::DescriptorMatcher::DescriptorCollection::~DescriptorCollection(void)" (??1DescriptorCollection@DescriptorMatcher@cv@@UAE@XZ) referenced in function "public: virtual __thiscall cv::FlannBasedMatcher::~FlannBasedMatcher(void)" (??1FlannBasedMatcher@cv@@UAE@XZ)
1>flannMatch.obj : error LNK2019: unresolved external symbol "public: virtual __thiscall cv::FeatureDetector::~FeatureDetector(void)" (??1FeatureDetector@cv@@UAE@XZ) referenced in function "public: virtual __thiscall cv::Feature2D::~Feature2D(void)" (??1Feature2D@cv@@UAE@XZ)
1>flannMatch.obj : error LNK2019: unresolved external symbol "public: virtual __thiscall cv::DescriptorExtractor::~DescriptorExtractor(void)" (??1DescriptorExtractor@cv@@UAE@XZ) referenced in function "public: virtual __thiscall cv::Feature2D::~Feature2D(void)" (??1Feature2D@cv@@UAE@XZ)

また、こちらの質問の 1 つにより、surf and sift が nonfree に移動したことも知っています。一見したところ、OpenCV の 2 つのバージョン (2.2 と 2.4) があり、違いが生じているためではないかと思いました。そこで、2.2 を削除して、別のプログラムを実行しようとしました。正常に動作していましたが、それでもこのエラーはなくなりませんでした。

だから私の質問、私はここで何が欠けていますか? 別のライブラリの依存関係はありますか? 見えないって何?どんな助けでも大歓迎です。

--編集--

どうして見えなかったの?このような簡単な質問を投稿して本当に申し訳ありません。私はとてもばかげていると感じます。この依存関係を追加するのを忘れていました。

C:\OpenCV2.4\lib\opencv_features2d242d.lib

誰もそれを再び見逃すとは思わない。

4

1 に答える 1

2

どうして見えなかったの?このような簡単な質問を投稿して本当に申し訳ありません。私はとてもばかげていると感じます。この依存関係を追加するのを忘れていました。

C:\OpenCV2.4\lib\opencv_features2d242d.lib

誰もそれを再び見逃すとは思わない。

于 2012-08-29T06:12:39.813 に答える