Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv 如何在javaCV中将KeyPointVector传输到Mat_Opencv_Javacv_Surf_Opticalflow - Fatal编程技术网

Opencv 如何在javaCV中将KeyPointVector传输到Mat

Opencv 如何在javaCV中将KeyPointVector传输到Mat,opencv,javacv,surf,opticalflow,Opencv,Javacv,Surf,Opticalflow,我想从图像中获取的特征点制作一个calcOpticalFlowPyrLK,当我使用goodFeaturesToTrack时,一切正常,如下所示: goodFeaturesToTrack(blackOutImagePrev, prevCorners, 200, 0.04, 30); calcOpticalFlowPyrLK(blackOutImagePrev, blackOutImageNext, prevCorners, nextCorners, status, err); 由于处理速度的问题

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

goodFeaturesToTrack(blackOutImagePrev, prevCorners, 200, 0.04, 30);
calcOpticalFlowPyrLK(blackOutImagePrev, blackOutImageNext, prevCorners, nextCorners, status, err);
由于处理速度的问题,我想将获取特征点的功能更改为surf或fast方法。对于surf,功能是:

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

由于surf get特征点存储在KeyPointVector中,但其类型为Mat。我怎样才能把它转移到Mat,这样我就可以调用CalCopticalFlowPyrk了?还是有解决办法

看起来a只是一个向量。KeyPoints类型具有,它将返回一个
Point2f
,您可以使用该点构建一个
Mat
。因此,创建新的
Mat
,循环遍历关键点向量,使用
pt()
获取点并插入。

看起来a只是一个向量。
KeyPoints
类型具有返回
Point2f
的属性,您可以使用该属性构建
Mat
。因此,创建新的
Mat
,循环通过关键点向量,使用
pt()
获取点并插入。谢谢,我尝试过了,它很有效。太棒了!我把它作为一个答案加上去了。