c – OpenCV SURF功能未实现

当我尝试运行示例find_obj.cpp或任何OpenCV SURF程序时,我在执行代码时在命令提示符处得到以下错误.该项目建立没有错误和警告.我使用的是VS2011 beta,OpenCV 2.4和 windows7.

错误信息:

OpenCV Error: The function/feature is not implemented < OpenCV was built without SURF support> in unkNown function,file ..\..\..\src\opencv\modules\legacy\src\features2d.cpp,line 77

我尝试使用Cmake然后VS2011在调试模式下再次构建OpenCV 2.4,然后在IDE中添加了lib路径,但仍然没有结果.

我该如何解决

#include <opencv2/objdetect/objdetect.hpp>
    #include <opencv2/features2d/features2d.hpp>
    #include <opencv2/core/core.hpp>
    #include <opencv2/highgui/highgui.hpp>
    #include <opencv2/legacy/legacy.hpp>
    #include <opencv2/legacy/compat.hpp>
    #include <opencv2/flann/flann.hpp>
    #include <opencv2/calib3d/calib3d.hpp>
    #include <opencv2/nonfree/features2d.hpp>
    #include <opencv2/nonfree/nonfree.hpp>

using namespace std;
using namespace cv;
int main()
{
    cv::initModule_nonfree();//THIS LINE IS IMPORTANT   

   IplImage *image1 = cvLoadImage("C:\\SURF\\1.jpg"); 
    IplImage *image2 = cvLoadImage("C:\\SURF\\2.jpg");

    CvMemStorage* memoryBlock = cvCreateMemStorage();
    CvSeq* image1KeyPoints;
    CvSeq* image1Descriptors;
    CvSeq* image2KeyPoints;
    CvSeq* image2Descriptors;

    // Only values with a hessian greater than 500 are considered for keypoints
   CvSURFParams params = cvSURFParams(500,1);
   cvExtractSURF(image1,&image1KeyPoints,&image1Descriptors,memoryBlock,params);
   cvExtractSURF(image2,&image2KeyPoints,&image2Descriptors,params);

   return 0;
}

解决方法

this answer开始(为什么不问你谷歌你的问题?):

SIFT和SURF代码在OpenCV v2.4中移动到一个新的模块非自由.确保您正在链接(Windlow中的DLL).在linux中,这个库被称为libopencv_nonfree.so.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...