1.错误描述:
使用OpenCV3.X进行特征检测类算法实现,使用SIFT、SURF、ORB算法函数进行例程学习改进时,参考学习别人的例程时,经常出现错误提示:未声明的标识符:SurfFeatureDetector”,或
如下类型错误提示:
或
或
2.原因分析:
出现此类问题的原因是:
(1)OpenCV3.X中,xfeature2d模块作为一个独立的模块,转移到独立的第三方库中,官方发行的OpenCV3中并没有包含;
(2)若使用的是源码编译,并确认已经编译xfeature2d模块库进去;或者其他方式的已包含xfeature2d算法模块;那么问题可能就是:没有正确的包含文件路径;
(3)没有正确的使用类,类型使用错误或者不合规范。
(4)其他原因
3.解决方案:
(1)检查使用环境与配置情况:确保已包含xfeature2d第三方库;查询方法参考:
找到安装目录,include文件夹下opencv2文件中查看,如图所示:
(2) 在你的项目程序中正确包含头文件路径,参考如下:具体看个人配置环境目录路径
(3)正确使用类型名/类名/智能指针/构造函数:
可将对应变量改成如下形式:
Ptr<xfeature2d库中类的变量类型> 变量名 = 类::create();
例如:
又如:
编译——>运行——>正常!
问题解决!
提示:若以上方法还不能解决此类问题,多半是环境配置的原因,请着重检查!
本人测试环境:Win10-X64 : VS2013+OpenCV3.4.3+opencv_contrib3.4.3
欢迎交流~