如何在javaCV中将KeyPointVector传输到Mat

时间:2017-11-24 03:05:03

标签: opencv javacv surf opticalflow

我想从图像中获取特征点的calcOpticalFlowPyrLK,当我使用goodFeaturesToTrack时,一切正常如下:

goodFeaturesToTrack(blackOutImagePrev, prevCorners, 200, 0.04, 30);
calcOpticalFlowPyrLK(blackOutImagePrev, blackOutImageNext, prevCorners, nextCorners, status, err);

由于处理速度问题,我想改变我获得特征点冲浪或快速方法的功能。对于冲浪,功能是:

final KeyPointVector kp = new KeyPointVector();
final SURF surf = SURF.create(2500, 4, 2, true, false);
surf.detect(image, kp);

由于冲浪获取功能点存储在KeyPointVector中,但prevCorners的类型是Mat。我怎么能把它转移到Mat所以我可以调用calcOpticalFlowPyrLK?或者有任何解决方法?

1 个答案:

答案 0 :(得分:1)

看起来KeyPointVector只是KeyPoints的向量。 KeyPoints类型具有pt() method,它将返回Point2f,您可以使用Mat构建Mat。因此,创建新的pt(),并遍历关键点向量,获取带 SELECT id, first_name, last_name, birthdate FROM customers_index WHERE first_name @@ plainto_tsquery('simple','John') AND last_name @@ plainto_tsquery('simple','Smith') AND birthdate = '17.08.1967'; 的点并插入。