我可以指定使用opencv FastFeatureDetector时获得的FAST关键点编号吗?



我正在使用openCV FastFeatureDetector从图像中提取快速关键点。
但快速特征检测器检测的编号不是常量数字。
我想设置快速特征检测器获取的最大关键点数。
我可以指定使用openCV FastFeatureDetector
时获得的FAST关键点数吗?如何?

我最近遇到了这个问题,经过简短的搜索,我发现了DynamicAdaptedFeatureDetector,它可以迭代检测关键点,直到找到所需的数字。

检查:http://docs.opencv.org/modules/features2d/doc/common_interfaces_of_feature_detectors.html#dynamicadaptedfeaturedetector

法典:

int maxKeypoints, minKeypoints;
Ptr<FastAdjuster> adjust = new FastAdjuster();
Ptr<FeatureDetector> detector = new DynamicAdaptedFeatureDetector(adjust,minKeypoints,maxKeypoints,100);
vector<KeyPoint> keypoints;
detector->detect(image, keypoints);

我提供了代码的主要部分,在这种情况下,您可以根据需要设置关键点的数量。祝你好运。

# define MAX_FEATURE 500  // specify maximum expected feature size
string detectorType = "FAST"; 
string descriptorType = "SIFT";
detector = FeatureDetector::create(detectorType);
extractor = DescriptorExtractor::create(descriptorType);
Mat descriptors;
vector<KeyPoint> keypoints;
detector->detect(img, keypoints);
if( keypoints.size() > MAX_FEATURE )
{
    cout << " [INFO] key-point 1 size: " << keypoints.size() << endl;
    KeyPointsFilter::retainBest(keypoints, MAX_FEATURE);
}
cout << " [INFO] key-point 2 size: " << keypoints.size() << endl;
extractor->compute(img, keypoints, descriptors);

另一种解决方案是以低阈值检测尽可能多的关键点,并应用本文所述的自适应非极大抑制(ANMS)。您可以指定所需的点数。此外,您可以免费获得均匀分布在图像上的点。代码可以在这里找到。

相关内容

  • 没有找到相关文章