Java中OpenCV中的KeyPoint和MatchDpoint是什么

问题描述 投票:0回答:1

亲爱的们 1-我知道 Point 类是关于两个通道整数值坐标(点):就像 MatOfPoint 是整数点的向量。 和KeyPoint类一样吗? 我知道它是一个包含显着点的类。将它们视为两个通道浮点值坐标(点)是真的吗?看下面几行:

KeyPoint test;
test= new float[]{x,y};

我写这些是为了看看我对 KeyPoint 的解释是否有效。请验证这一点。

2-什么是Dmatch match.trainIdx?我的意思是trainIdx是什么?

和平

java opencv computer-vision match keypoint
1个回答
2
投票

KeyPoint 存储显着点描述。它存储 x、y、角度、大小等。请参阅 http://docs.opencv.org/java/2.4.2/org/opencv/features2d/KeyPoint.html
在 Java 中手动初始化它的正确方法是:

KeyPoint test = new KeyPoint(x, y, size);

或者获取图像关键点列表:

Mat srcImage;
MatOfKeyPoint keypoints;
Mat descriptors;
DescriptorExtractor descExctractor = DescriptorExtractor.create(DescriptorExtractor.SIFT);
descExctractor.compute(srcImage, keypoints, descExctractor);
KeyPoint[] keyPointsArray = keypoints.toArray()

DMatch 包含匹配关键点描述符的描述。请参阅http://docs.opencv.org/java/2.4.2/org/opencv/features2d/DMatch.html
它由 DescriptorMatcher 实现(match、knnmatch、radiusmatch 函数)返回。您将矩阵 queryDescriptors 和 trainDescriptors 传递给这些函数之一。
trainIdx 是 trainDescriptors 中的行索引,它最接近于 queryDescriptors 中的给定描述符。

我建议阅读原始 OpenCV 描述和 C++ 示例,Java 仅通过 JNI 提供到 C++ 功能的映射。

© www.soinside.com 2019 - 2024. All rights reserved.