SIFT openCV的关键点数量?

时间:2014-03-16 11:47:57

标签: opencv image-processing computer-vision

我使用以下代码在图像中提取和绘制SIFT关键点。但在我的代码中,我没有指定我想要提取多少个关键点?所以,它完全取决于图像有多少个关键点。

我想要的是什么:我想指定我需要图像中最多20个关键点。如果不存在20个关键点则无需继续进行,或者如果关键点超过20,则只考虑最重要的20个关键点。

我目前的代码:

//To store the keypoints that will be extracted by SIFT
vector<KeyPoint> keypoints;

//The SIFT feature extractor and descriptor
SiftDescriptorExtractor detector;    


Mat input;    

//open the file
input = imread("image.jpg", 0); 

//detect feature points
detector.detect(input, keypoints);

///Draw Keypoints
Mat keypointImage;
keypointImage.create( input.rows, input.cols, CV_8UC3 );
drawKeypoints(input, keypoints, keypointImage, Scalar(255,0,0));
imshow("Keypoints Found", keypointImage);
waitKey(0);

2 个答案:

答案 0 :(得分:6)

可以使用以下行来完成:

//The SIFT feature extractor and descriptor
SiftDescriptorExtractor detector(20); 

答案 1 :(得分:1)

下载本书http://www.ebooks-it.net/ebook/opencv-2-computer-vision-application-programming-cookbook它完全解释了SIFT和其他特征检测器如何工作以及如何使用C ++代码