opencv SIFT 特征提取使用useProvidedKeypoints=true的时候,对特征点有什么要求?

flymacat 2016-05-10 09:01:29
我使用的opencv是2.4.11版本,里面是有sift特征提取函数,我是通过重载的()运算符来提取的特征,特征点向量vector<Keypoints>使用的人脸面部特征点,一共68个点,我设置keypoints为面部特征点的坐标,但是提取出来的sift特征的描述子全是0,
下面是我使用的代码:

Mat image = imread("123.jpg",0); //一副人脸图像
fstream fin;
fin.open("123.pts"); //存放68个特征点的文件
KeyPoint kp;
vector<KeyPoint> vkp;
for (int i = 0; i < 68; i++) //人脸的68个特征点坐标值
{
fin >> kp.pt.x;
fin >> kp.pt.y;
kp.octave = 3;
kp.angle = 0;
kp.size = 0;
kp.class_id = -1;
kp.response = 0;
vkp.push_back(kp);
}
Mat desc;
SIFT sift;
sift(image, Mat(), vkp, desc,);

在上面的kp.angle,size,response设置为某些值的时候,是可以得到非零的特征描述子的,但是我不知道这些值应当怎么设置,
请问,这些值如果需要自己设置的话,那么该怎么设置,还是有自动的方法?
PS:我使用同样的方法是可以提取ORB特征的
...全文
510 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
eternity1118_ 2016-05-15
  • 打赏
  • 举报
回复
你参数设置的问题,orb算子可以是因为orb提取的是fast特征和brief描述子,跟sift无关。另外,建议你用opencv3.0,直接detect 和compute的,比这个重载函数用着方便多了,不会手动设置那么多参数

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧