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("(?(??0SIFT@cv@@QAE@HHNNN@Z( 在函数"void _cdecl`‘detector’(void(的动态初始值设定项"中引用(??_Edetector@YAXXZ(
1> realtime.obj:错误LNK2019:未解析的外部符号"public:__thiscall cv::flann::KDTreeIndexParameters::KDTreeIndexParameters(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的新手,我将非常感谢您的帮助。
您使用的是opencv
,而不是针对其库(.lib文件(进行链接。
右键单击解决方案资源管理器中的项目,然后从上下文菜单中选择属性。
在配置属性>链接器>输入下,将opencv
的.lib文件添加到附加依赖项。
您需要在visualstudio编辑器中链接库。
请右键单击解决方案资源管理器中的项目,然后从菜单中选择属性。
在Configuration Properties(配置属性(->Linker(链接器(->Input(输入(->Additional Dependencies(附加依赖项(下,添加(.lib(,例如-opencv_calib3d220d.libopencv_contrib220d.libopencv_core220d.libopencv_features2d220d.lib
然后申请,我希望你的问题能得到解决。
对于Flann Matcher,您需要链接:opencv_frannXXXd.lib