我想获得指定点的SIFT功能。这些点不是由KeyPoint Detector手动获得的。我的问题是:我只知道点的位置,但不知道大小和 Angular 值。我应该如何设定这个值?
这是我的代码:
int main()
{
Mat img_object = imread("img/test.jpg", 0);
SiftDescriptorExtractor extractor;
Mat descriptors;
std::vector<KeyPoint> keypoints;
// set keypoint position and size: should I set
// size parameter to 32 for 32x32 patch?
KeyPoint kp(50, 60, 32);
keypoints.push_back(kp);
extractor.compute( img_object, keypoints, descriptors );
return 0;
}
我应该将32x32补丁的KeyPoint的大小参数设置为32。这个实现合理吗?
最佳答案
通常,关键点检测器在某个点附近的本地邻域上工作。这是OpenCV的size
类的KeyPoint
字段。 angle
字段是关键点的主要方向(注意,可以将其设置为-1)。
OpenCV KeyPoint class
Another reference here.