gpt4 book ai didi

c++ - OpenCV SURF 功能未实现

转载 作者:可可西里 更新时间:2023-11-01 15:39:43 28 4
gpt4 key购买 nike

当我尝试运行示例 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

我尝试在 Debug模式下使用 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, 0, &image1KeyPoints, &image1Descriptors, memoryBlock, params);
cvExtractSURF(image2, 0, &image2KeyPoints, &image2Descriptors, memoryBlock, params);

return 0;
}

最佳答案

取自this answer (你为什么不在问之前用谷歌搜索你的问题?):

SIFT 和 SURF 代码在 OpenCV v2.4 中被移动到一个名为非自由。确保您正在链接(Windlows 中的 DLL)到它。在 Linux 中,此库称为 libopencv_nonfree.so

关于c++ - OpenCV SURF 功能未实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11175794/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com