0
    int match(int page,Mat img_frame){
Mat des_frame;
std::vector<KeyPoint> kp_frame;
std::vector<vector<DMatch > > matches;
detector.detect( img_frame, kp_frame );
extractor.compute(img_frame,kp_frame,des_frame);
std::vector<DMatch > good_matches;
if(page<0)
    return 0;
switch(pageNumber)
{
    case 0:
        matcher.knnMatch(des_page[0], des_frame, matches, 2);
        break;
    case 2:
        matcher.knnMatch(des_page[1], des_frame, matches, 2);
        //cout<<"matcigpage23";
        break;
    case 4:
        matcher.knnMatch(des_page[2], des_frame, matches, 2);
        break;
    case 6:
        matcher.knnMatch(des_page[3], des_frame, matches, 2);
        break;
    case 8:
        matcher.knnMatch(des_page[4], des_frame, matches, 2);
        break;
    case 10:
        matcher.knnMatch(des_page[5], des_frame, matches, 2);
        break;
    }
    for(int i = 0; i < min(des_frame.rows-1,(int) matches.size()); i++) //THIS LOOP IS SENSITIVE TO SEGFAULTS
    {
        if((matches[i][0].distance < 0.6*(matches[i][1].distance)) && ((int) matches[i].size()<=2 && (int) matches[i].size()>0))
        {
            good_matches.push_back(matches[i][0]);
        }
    }
    return good_matches.size();
}

「.cpp」にこのような関数があります。これを Visual Studio 2010 でコンパイルすると、次のようなリンカー エラーが発生します。

1>realtime.obj : エラー LNK2019: 未解決の外部シンボル "public: __thiscall cv::SIFT::SIFT(int,int,double,double,double)" (??0SIFT@cv@@QAE@HHNNN@Z) が参照されました関数内 "void _ cdecl `'detector'' の動的初期化子 (void)" (?? _Edetector@@YAXXZ)

1>realtime.obj : エラー LNK2019: 未解決の外部シンボル "パブリック: __thiscall cv::flann::KDTreeIndexParams::KDTreeIndexParams(int)" (??0KDTreeIndexParams@flann@cv@@QAE@H@Z) 関数で参照" void _ cdecl `'matcher'' の動的イニシャライザ(void)" (?? _Ematcher@@YAXXZ)

1>realtime.obj : エラー LNK2019: 未解決の外部シンボル "public: __thiscall cv::flann::SearchParams::SearchParams(int,float,bool)" (??0SearchParams@flann@cv@@QAE@HM_N@Z)関数 "void _ cdecl `'matcher'' の動的初期化子 (void)" で参照 (?? _Ematcher@@YAXXZ)

1>realtime.obj : エラー LNK2019: 未解決の外部シンボル "public: __thiscall cv::flann::IndexParams::~IndexParams(void)" (??1IndexParams@flann@cv@@QAE@XZ) 関数 "public で参照: void * __thiscall cv::flann::IndexParams::`スカラ削除デストラクタ'(unsigned int)" (??_GIndexParams@flann@cv@@QAEPAXI@Z)

1>C:\Users\vinit\documents\visual studio 2010\Projects\mynewopencv\Debug\mynewopencv.exe: 致命的なエラー LNK1120: 4 つの未解決の外部

私は新しい Visual Studio です。助けていただければ幸いです。

4

3 に答える 3

1

Visual Studio エディタでライブラリをリンクする必要があります。

ソリューション エクスプローラーでプロジェクトを右クリックし 、メニューから[プロパティ] を選択してください。

[構成プロパティ] -> [リンカー] -> [入力] -> [追加の依存関係] の下に、-opencv_calib3d220d.lib opencv_contrib220d.lib opencv_core220d.lib opencv_features2d220d.lib などの (.lib) を追加します。

あなたの問題が解決されることを願っています。

于 2013-02-19T06:33:21.387 に答える
1

opencvそのライブラリ (.lib ファイル) を使用しており、リンクしていません。

ソリューション エクスプローラーでプロジェクトを右クリックし、コンテキスト メニューから[プロパティ]を選択します。

[Configuration Properties] > [Linker] > [Input ] の下で、.lib ファイルをopencv[ Additional Dependencies ] に追加します。

于 2013-02-18T19:54:30.350 に答える
1

Flann Matcher の場合、リンクする必要があります: opencv_flannXXXd.lib

于 2014-01-24T12:29:56.370 に答える