OpenCV中SUFR、SIFT无法使用的原因及解决办法

在写OpenCV程序时中SUFR、SIFT无法使用,会报错,类似的报错如下:


无法解析的外部符号"public:__thiscall cv::SURF::SURF(void)" (??0SURF@cv@@QAE@XZ),该符号在函数main 中被引用


无法解析的外部符号"public:__thiscall cv::SURF::SURF(double,int,int,bool,bool)"(??0SURF@cv@@QAE@NHH_N0@Z),该符号在函数main 中被引用



原因:因为SIFT、SURF在美国已经申请了专利,所以并不是免费开源随便使用的,为此OpenCV中有一个nonfree文件夹包含了一些非免费的头文件,例如nonfree.hpp文件,使用SURF、SIFT时需要导入该nonfree.hpp文件

OpenCV中SUFR、SIFT无法使用的原因及解决办法_第1张图片



#include "opencv2/nonfree/nonfree.hpp"



同时在项目属性中添加以下依赖项:

opencv_nonfree246.lib
opencv_nonfree246d.lib

这样就可以了。

你可能感兴趣的:(OpenCV)