gpt4 book ai didi

c++ - OpenCV SurfDescriptorExtractor 编译错误

转载 作者:太空宇宙 更新时间:2023-11-03 23:03:19 25 4
gpt4 key购买 nike

尝试编译特征检测算法时出现以下编译错误:我正在用 clang 编译/链接,我的 OpenCV 版本是 2.3.1 版本。我正在(大致)按照本教程进行功能匹配:http://opencv.itseez.com/doc/tutorials/features2d/feature_flann_matcher/feature_flann_matcher.html

error: use of undeclared identifier 'SurfDescriptorExtractor';
did you mean 'OrbDescriptorExtractor'?
SurfDescriptorExtractor extractor;
^

有趣的是 Brief 和 Orb 描述符提取器工作“很好”(我最终遇到运行时错误)。

相关代码如下:

void setup_and_draw_keypoints(Mat& img, Mat& prev)
{
// Detect Keypoints
vector<KeyPoint> keypoints, prev_keypoints;
GoodFeaturesToTrackDetector gftt;
gftt.detect(img, keypoints);
gftt.detect(prev, prev_keypoints);

//Extract Descriptors
SurfDescriptorExtractor extractor;
Mat desc_1, desc_2; // Descriptors
extractor.compute(img, keypoints, desc_1);
extractor.compute(prev, prev_keypoints, desc_2);
FlannBasedMatcher matcher;
vector<DMatch> matches;

matcher.match(desc_1, desc_2, matches);
}

最佳答案

您链接到的教程是在将 features2d 库分离为免费(非专利、开放许可)算法和未公开许可的内容之前编写的。 SURF 和 SIFT 就是两种这样的算法。要获得 SurfFeatureDescriptor,您需要做的就是从 nonfree includes 文件夹中包含 features2d.hpp header 。

在我的 opencv 发行版(我目前使用的是 2.4.1)中,它位于:“C:\Users\Jake\Downloads\opencv\modules\nonfree\include\opencv2\nonfree\features2d.hpp”。我在项目设置中将路径“C:\Users\Jake\Downloads\opencv\modules\nonfree\include\”列为包含目录,因此在我的代码中我所做的就是:

#include <opencv2/nonfree/features2d.hpp>

SiftDescriptorExtractor siftExtractor;
//Later on in the file, after a frame has been grabbed, keypoints found, etc.
Mat siftDescriptors;
siftExtractor.compute(frame,roiKP,siftDescriptors);

就是这样。希望这对你有用还不算太晚。

关于c++ - OpenCV SurfDescriptorExtractor 编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10148835/

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