Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.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
Android 如何从两个匹配特征中获取像素距离_Android_Opencv - Fatal编程技术网

Android 如何从两个匹配特征中获取像素距离

Android 如何从两个匹配特征中获取像素距离,android,opencv,Android,Opencv,我使用安卓OpenCV从相机的输入帧检测功能。我正在使用带有BFMatcher的ORB特征检测器和ORB描述符提取器。现在我得到了一些以 matches = Mat [ 421*1*CV_32FC4, isCont=true, isSubmat=false, nativeObj=0x5fad7b30, dataAddr=0x5fab84f0 ] 我想知道nativeObj和dataAddr代表什么?我想得到两个匹配特征之间的距离以像素为单位,知道吗 我发现其他人也有同样的问题,但没有人回答 提

我使用安卓OpenCV从相机的输入帧检测功能。我正在使用带有BFMatcher的ORB特征检测器和ORB描述符提取器。现在我得到了一些以

matches = Mat [ 421*1*CV_32FC4, isCont=true, isSubmat=false, nativeObj=0x5fad7b30, dataAddr=0x5fab84f0 ]
我想知道nativeObj和dataAddr代表什么?我想得到两个匹配特征之间的距离以像素为单位,知道吗

我发现其他人也有同样的问题,但没有人回答


提前谢谢

执行特征描述符匹配时,应获得
MatOfDMatch
。您的代码应该如下所示:

DescriptorMatcher matcher = DescriptorMatcher.create(DescriptorMatcher.BRUTEFORCE_HAMMING);
MatOfDMatch matches = new MatOfDMatch();
matcher.match(descriptors1,descriptors2 ,matches);
之后,您可以将
MatOfDMatch
转换为
列表
,以便于操作。您可以通过以下方式完成:

List<DMatch> matchesList = matches.toList();
计算两点之间的距离后:

double dist_x_pow = Math.pow(Math.abs(pt1.x - pt2.x),2);
double dist_y_pow = Math.pow(Math.abs(pt1.y - pt2.y),2);
double DISTANCE = Math.sqrt(dist_x_pow + dist_y_pow);

关于
nativeObj
dataAddr
我不确定,但我认为这与OpenCV库是用C实现的事实有关,我认为这个值表示Mat对象内存中的地址。

非常感谢!它很有用!
double dist_x_pow = Math.pow(Math.abs(pt1.x - pt2.x),2);
double dist_y_pow = Math.pow(Math.abs(pt1.y - pt2.y),2);
double DISTANCE = Math.sqrt(dist_x_pow + dist_y_pow);