使用OpenCV获取指定点的SIFT描述符

使用OpenCV获取指定点的SIFT描述符,opencv,computer-vision,sift,keypoint,Opencv,Computer Vision,Sift,Keypoint,我想得到指定点的SIFT特征。这些点是通过手动而不是通过关键点检测器获取的。我的问题是:我只知道点的位置,但不知道点的大小和角度。我应该如何设置此值 这是我的密码: int main() { Mat img_object = imread("img/test.jpg", 0); SiftDescriptorExtractor extractor; Mat descriptors; std::vector<KeyPoint> keypoints;

我想得到指定点的SIFT特征。这些点是通过手动而不是通过关键点检测器获取的。我的问题是:我只知道点的位置,但不知道点的大小和角度。我应该如何设置此值

这是我的密码:

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;
}
intmain()
{
Mat img_object=imread(“img/test.jpg”,0);
SiftDescriptorExtractor-extractor;
Mat描述符;
向量关键点;
//设置关键点位置和大小:我应该设置吗
//32x32修补程序的大小参数是否为32?
关键点kp(50,60,32);
关键点。推回(kp);
compute(img_对象、关键点、描述符);
返回0;
}

对于32x32修补程序,是否应将KeyPoint的大小参数设置为32。这种实现合理吗?

通常,关键点检测器在一个点周围的本地社区工作。这是OpenCV的
KeyPoint
类的
size
字段。
角度
字段是关键点的主要方向(可以设置为-1,注意)


将大小设置为32意味着:一个点周围有一个32x32的本地邻里区,对吗?我想是的。但这是毫无意义的,因为你所标记的只是点而不是关键点。这将是一个问题,这些点在算法的下一阶段用于什么。谢谢你的回答!在面部,这些点是面部的标志点,将用于面部对齐。是的,对。我对这种技术很熟悉。如果答案确实解决了你的问题,请考虑正确答案。