类 DescriptorMatcher
- java.lang.Object
-
- org.opencv.core.Algorithm
-
- org.opencv.features2d.DescriptorMatcher
-
- 直接已知子类
BFMatcher,FlannBasedMatcher
public class DescriptorMatcher extends Algorithm
匹配关键点描述符的抽象基类。它有两组匹配方法:用于匹配一张图像的描述符与另一张图像或一组图像的描述符。
-
-
字段摘要
字段 修饰符和类型 字段 描述 static intBRUTEFORCEstatic intBRUTEFORCE_HAMMINGstatic intBRUTEFORCE_HAMMINGLUTstatic intBRUTEFORCE_L1static intBRUTEFORCE_SL2static intFLANNBASED
-
构造函数摘要
构造函数 修饰符 构造函数 描述 保护DescriptorMatcher(long addr)
-
方法摘要
所有方法 静态方法 实例方法 具体方法 修饰符和类型 方法 描述 静态 DescriptorMatcher__fromPtr__(long addr)voidadd(java.util.List<Mat> descriptors)添加描述符以训练 CPU (trainDescCollectionis) 或 GPU (utrainDescCollectionis) 描述符集合。voidclear()清除训练描述符集合。DescriptorMatcherclone()克隆匹配器。DescriptorMatcherclone(boolean emptyTrainData)克隆匹配器。静态 DescriptorMatchercreate(int matcherType)静态 DescriptorMatchercreate(java.lang.String descriptorMatcherType)使用默认参数(使用默认构造函数)创建给定类型的描述符匹配器。booleanempty()如果两个集合中都没有训练描述符,则返回 true。protected voidfinalize()java.util.List<Mat>getTrainDescriptors()返回到训练描述符集合 trainDescCollection 的常量链接。booleanisMaskSupported()如果描述符匹配器支持掩码允许匹配,则返回 true。voidknnMatch(Mat queryDescriptors, java.util.List<MatOfDMatch> matches, int k)voidknnMatch(Mat queryDescriptors, java.util.List<MatOfDMatch> matches, int k, java.util.List<Mat> masks)voidknnMatch(Mat queryDescriptors, java.util.List<MatOfDMatch> matches, int k, java.util.List<Mat> masks, boolean compactResult)voidknnMatch(Mat queryDescriptors, Mat trainDescriptors, java.util.List<MatOfDMatch> matches, int k)为查询集中的每个描述符查找 k 个最佳匹配。voidknnMatch(Mat queryDescriptors, Mat trainDescriptors, java.util.List<MatOfDMatch> matches, int k, Mat mask)为查询集中的每个描述符查找 k 个最佳匹配。voidknnMatch(Mat queryDescriptors, Mat trainDescriptors, java.util.List<MatOfDMatch> matches, int k, Mat mask, boolean compactResult)为查询集中的每个描述符查找 k 个最佳匹配。voidmatch(Mat queryDescriptors, MatOfDMatch matches)voidmatch(Mat queryDescriptors, MatOfDMatch matches, java.util.List<Mat> masks)voidmatch(Mat queryDescriptors, Mat trainDescriptors, MatOfDMatch matches)为查询集中的每个描述符查找最佳匹配。voidmatch(Mat queryDescriptors, Mat trainDescriptors, MatOfDMatch matches, Mat mask)为查询集中的每个描述符查找最佳匹配。voidradiusMatch(Mat queryDescriptors, java.util.List<MatOfDMatch> matches, float maxDistance)voidradiusMatch(Mat queryDescriptors, java.util.List<MatOfDMatch> matches, float maxDistance, java.util.List<Mat> masks)voidradiusMatch(Mat queryDescriptors, java.util.List<MatOfDMatch> matches, float maxDistance, java.util.List<Mat> masks, boolean compactResult)voidradiusMatch(Mat queryDescriptors, Mat trainDescriptors, java.util.List<MatOfDMatch> matches, float maxDistance)对于每个查询描述符,查找距离不超过指定距离的训练描述符。voidradiusMatch(Mat queryDescriptors, Mat trainDescriptors, java.util.List<MatOfDMatch> matches, float maxDistance, Mat mask)对于每个查询描述符,查找距离不超过指定距离的训练描述符。voidradiusMatch(Mat queryDescriptors, Mat trainDescriptors, java.util.List<MatOfDMatch> matches, float maxDistance, Mat mask, boolean compactResult)对于每个查询描述符,查找距离不超过指定距离的训练描述符。voidread(java.lang.String fileName)voidtrain()训练描述符匹配器 (例如,flann 索引)。voidwrite(java.lang.String fileName)-
从类 org.opencv.core.Algorithm 继承的方法
getDefaultName, getNativeObjAddr, save
-
-
-
-
字段详细信息
-
FLANNBASED
public static final int FLANNBASED
- 参见
- 常量字段值
-
BRUTEFORCE
public static final int BRUTEFORCE
- 参见
- 常量字段值
-
BRUTEFORCE_L1
public static final int BRUTEFORCE_L1
- 参见
- 常量字段值
-
BRUTEFORCE_HAMMING
public static final int BRUTEFORCE_HAMMING
- 参见
- 常量字段值
-
BRUTEFORCE_HAMMINGLUT
public static final int BRUTEFORCE_HAMMINGLUT
- 参见
- 常量字段值
-
BRUTEFORCE_SL2
public static final int BRUTEFORCE_SL2
- 参见
- 常量字段值
-
-
方法详细信息
-
__fromPtr__
public static DescriptorMatcher __fromPtr__(long addr)
-
add
public void add(java.util.List<Mat> descriptors)
添加描述符以训练 CPU (trainDescCollectionis) 或 GPU (utrainDescCollectionis) 描述符集合。如果集合不为空,新描述符将添加到现有训练描述符中。- 参数
descriptors- 要添加的描述符。每个 descriptors[i] 都是来自同一训练图像的一组描述符。
-
getTrainDescriptors
public java.util.List<Mat> getTrainDescriptors()
返回到训练描述符集合 trainDescCollection 的常量链接。- 返回
- 自动生成
-
isMaskSupported
public boolean isMaskSupported()
如果描述符匹配器支持掩码允许匹配,则返回 true。- 返回
- 自动生成
-
train
public void train()
训练描述符匹配器 (例如,flann 索引)。在所有匹配方法中,`train()` 方法在每次匹配之前运行。一些描述符匹配器 (例如,BruteForceMatcher) 对此方法有空实现。其他匹配器则真正训练其内部结构 (例如,FlannBasedMatcher 训练 flann::Index)。
-
match
public void match(Mat queryDescriptors, Mat trainDescriptors, MatOfDMatch matches, Mat mask)
为查询集中的每个描述符查找最佳匹配。- 参数
queryDescriptors- 查询描述符集。trainDescriptors- 训练描述符集。此集合未添加到类对象中存储的训练描述符集合。matches- 匹配项。如果查询描述符在 `mask` 中被遮罩,则不会为该描述符添加匹配项。因此,`matches` 的大小可能小于查询描述符的数量。mask- 指定输入查询描述符与训练描述符矩阵之间允许匹配的掩码。在此方法的第一种变体中,训练描述符作为输入参数传递。在此方法的第二种变体中,使用由 DescriptorMatcher::add 设置的训练描述符集合。可以传递可选掩码(或多个掩码)以指定哪些查询描述符和训练描述符可以匹配。即,仅当 mask.at<uchar>(i,j) 非零时,queryDescriptors[i] 才能与 trainDescriptors[j] 匹配。
-
match
public void match(Mat queryDescriptors, Mat trainDescriptors, MatOfDMatch matches)
为查询集中的每个描述符查找最佳匹配。- 参数
queryDescriptors- 查询描述符集。trainDescriptors- 训练描述符集。此集合未添加到类对象中存储的训练描述符集合。matches- 匹配项。如果查询描述符在 `mask` 中被遮罩,则不会为该描述符添加匹配项。因此,`matches` 的大小可能小于查询描述符的数量。在此方法的第一种变体中,训练描述符作为输入参数传递。在此方法的第二种变体中,使用由 DescriptorMatcher::add 设置的训练描述符集合。可以传递可选掩码(或多个掩码)以指定哪些查询描述符和训练描述符可以匹配。即,仅当 mask.at<uchar>(i,j) 非零时,queryDescriptors[i] 才能与 trainDescriptors[j] 匹配。
-
knnMatch
public void knnMatch(Mat queryDescriptors, Mat trainDescriptors, java.util.List<MatOfDMatch> matches, int k, Mat mask, boolean compactResult)
为查询集中的每个描述符查找 k 个最佳匹配。- 参数
queryDescriptors- 查询描述符集。trainDescriptors- 训练描述符集。此集合未添加到类对象中存储的训练描述符集合。mask- 指定输入查询描述符与训练描述符矩阵之间允许匹配的掩码。matches- 匹配项。每个 matches[i] 都是同一查询描述符的 k 个或更少匹配项。k- 为每个查询描述符找到的最佳匹配项数量,如果查询描述符的总可能匹配项少于 k 个,则为更少。compactResult- 当 `mask`(或多个 `masks`)不为空时使用的参数。如果 `compactResult` 为 false,则 `matches` 向量的大小与 `queryDescriptors` 的行数相同。如果 `compactResult` 为 true,则 `matches` 向量不包含完全被遮罩的查询描述符的匹配项。DescriptorMatcher::match 方法的这些扩展变体为每个查询描述符找到几个最佳匹配项。匹配项按距离递增的顺序返回。有关查询描述符和训练描述符的详细信息,请参阅 DescriptorMatcher::match。
-
knnMatch
public void knnMatch(Mat queryDescriptors, Mat trainDescriptors, java.util.List<MatOfDMatch> matches, int k, Mat mask)
为查询集中的每个描述符查找 k 个最佳匹配。- 参数
queryDescriptors- 查询描述符集。trainDescriptors- 训练描述符集。此集合未添加到类对象中存储的训练描述符集合。mask- 指定输入查询描述符与训练描述符矩阵之间允许匹配的掩码。matches- 匹配项。每个 matches[i] 都是同一查询描述符的 k 个或更少匹配项。k- 为每个查询描述符找到的最佳匹配项数量,如果查询描述符的总可能匹配项少于 k 个,则为更少。如果为 false,则 `matches` 向量的大小与 `queryDescriptors` 的行数相同。如果 `compactResult` 为 true,则 `matches` 向量不包含完全被遮罩的查询描述符的匹配项。DescriptorMatcher::match 方法的这些扩展变体为每个查询描述符找到几个最佳匹配项。匹配项按距离递增的顺序返回。有关查询描述符和训练描述符的详细信息,请参阅 DescriptorMatcher::match。
-
knnMatch
public void knnMatch(Mat queryDescriptors, Mat trainDescriptors, java.util.List<MatOfDMatch> matches, int k)
为查询集中的每个描述符查找 k 个最佳匹配。- 参数
queryDescriptors- 查询描述符集。trainDescriptors- 训练描述符集。此集合未添加到类对象中存储的训练描述符集合。matches- 匹配项。每个 matches[i] 都是同一查询描述符的 k 个或更少匹配项。k- 为每个查询描述符找到的最佳匹配项数量,如果查询描述符的总可能匹配项少于 k 个,则为更少。如果为 false,则 `matches` 向量的大小与 `queryDescriptors` 的行数相同。如果 `compactResult` 为 true,则 `matches` 向量不包含完全被遮罩的查询描述符的匹配项。DescriptorMatcher::match 方法的这些扩展变体为每个查询描述符找到几个最佳匹配项。匹配项按距离递增的顺序返回。有关查询描述符和训练描述符的详细信息,请参阅 DescriptorMatcher::match。
-
radiusMatch
public void radiusMatch(Mat queryDescriptors, Mat trainDescriptors, java.util.List<MatOfDMatch> matches, float maxDistance, Mat mask, boolean compactResult)
对于每个查询描述符,查找距离不超过指定距离的训练描述符。- 参数
queryDescriptors- 查询描述符集。trainDescriptors- 训练描述符集。此集合未添加到类对象中存储的训练描述符集合。matches- 找到的匹配项。compactResult- 当 `mask`(或多个 `masks`)不为空时使用的参数。如果 `compactResult` 为 false,则 `matches` 向量的大小与 `queryDescriptors` 的行数相同。如果 `compactResult` 为 true,则 `matches` 向量不包含完全被遮罩的查询描述符的匹配项。maxDistance- 匹配描述符之间距离的阈值。这里的距离是指度量距离(例如,汉明距离),而不是坐标之间的距离(以像素为单位测量)!mask- 指定输入查询描述符与训练描述符矩阵之间允许匹配的掩码。对于每个查询描述符,这些方法查找与查询描述符之间的距离等于或小于 `maxDistance` 的训练描述符。找到的匹配项按距离递增的顺序返回。
-
radiusMatch
public void radiusMatch(Mat queryDescriptors, Mat trainDescriptors, java.util.List<MatOfDMatch> matches, float maxDistance, Mat mask)
对于每个查询描述符,查找距离不超过指定距离的训练描述符。- 参数
queryDescriptors- 查询描述符集。trainDescriptors- 训练描述符集。此集合未添加到类对象中存储的训练描述符集合。matches- 找到的匹配项。如果为 false,则 `matches` 向量的大小与 `queryDescriptors` 的行数相同。如果 `compactResult` 为 true,则 `matches` 向量不包含完全被遮罩的查询描述符的匹配项。maxDistance- 匹配描述符之间距离的阈值。这里的距离是指度量距离(例如,汉明距离),而不是坐标之间的距离(以像素为单位测量)!mask- 指定输入查询描述符与训练描述符矩阵之间允许匹配的掩码。对于每个查询描述符,这些方法查找与查询描述符之间的距离等于或小于 `maxDistance` 的训练描述符。找到的匹配项按距离递增的顺序返回。
-
radiusMatch
public void radiusMatch(Mat queryDescriptors, Mat trainDescriptors, java.util.List<MatOfDMatch> matches, float maxDistance)
对于每个查询描述符,查找距离不超过指定距离的训练描述符。- 参数
queryDescriptors- 查询描述符集。trainDescriptors- 训练描述符集。此集合未添加到类对象中存储的训练描述符集合。matches- 找到的匹配项。如果为 false,则 `matches` 向量的大小与 `queryDescriptors` 的行数相同。如果 `compactResult` 为 true,则 `matches` 向量不包含完全被遮罩的查询描述符的匹配项。maxDistance- 匹配描述符之间距离的阈值。这里的距离是指度量距离(例如,汉明距离),而不是坐标之间的距离(以像素为单位测量)!对于每个查询描述符,这些方法查找与查询描述符之间的距离等于或小于 `maxDistance` 的训练描述符。找到的匹配项按距离递增的顺序返回。
-
match
public void match(Mat queryDescriptors, MatOfDMatch matches, java.util.List<Mat> masks)
- 参数
queryDescriptors- 查询描述符集。matches- 匹配项。如果查询描述符在 `mask` 中被遮罩,则不会为该描述符添加匹配项。因此,`matches` 的大小可能小于查询描述符的数量。masks- 掩码集。每个 masks[i] 指定输入查询描述符与第 i 个图像 trainDescCollection[i] 中存储的训练描述符之间允许的匹配项。
-
match
public void match(Mat queryDescriptors, MatOfDMatch matches)
- 参数
queryDescriptors- 查询描述符集。matches- 匹配项。如果查询描述符在 `mask` 中被遮罩,则不会为该描述符添加匹配项。因此,`matches` 的大小可能小于查询描述符的数量。指定输入查询描述符与第 i 个图像 trainDescCollection[i] 中存储的训练描述符之间允许的匹配项。
-
knnMatch
public void knnMatch(Mat queryDescriptors, java.util.List<MatOfDMatch> matches, int k, java.util.List<Mat> masks, boolean compactResult)
- 参数
queryDescriptors- 查询描述符集。matches- 匹配项。每个 matches[i] 都是同一查询描述符的 k 个或更少匹配项。k- 为每个查询描述符找到的最佳匹配项数量,如果查询描述符的总可能匹配项少于 k 个,则为更少。masks- 掩码集。每个 masks[i] 指定输入查询描述符与第 i 个图像 trainDescCollection[i] 中存储的训练描述符之间允许的匹配项。compactResult- 当 `mask`(或多个 `masks`)不为空时使用的参数。如果 `compactResult` 为 false,则 `matches` 向量的大小与 `queryDescriptors` 的行数相同。如果 `compactResult` 为 true,则 `matches` 向量不包含完全被遮罩的查询描述符的匹配项。
-
knnMatch
public void knnMatch(Mat queryDescriptors, java.util.List<MatOfDMatch> matches, int k, java.util.List<Mat> masks)
- 参数
queryDescriptors- 查询描述符集。matches- 匹配项。每个 matches[i] 都是同一查询描述符的 k 个或更少匹配项。k- 为每个查询描述符找到的最佳匹配项数量,如果查询描述符的总可能匹配项少于 k 个,则为更少。masks- 掩码集。每个 masks[i] 指定输入查询描述符与第 i 个图像 trainDescCollection[i] 中存储的训练描述符之间允许的匹配项。如果为 false,则 `matches` 向量的大小与 `queryDescriptors` 的行数相同。如果 `compactResult` 为 true,则 `matches` 向量不包含完全被遮罩的查询描述符的匹配项。
-
knnMatch
public void knnMatch(Mat queryDescriptors, java.util.List<MatOfDMatch> matches, int k)
- 参数
queryDescriptors- 查询描述符集。matches- 匹配项。每个 matches[i] 都是同一查询描述符的 k 个或更少匹配项。k- 为每个查询描述符找到的最佳匹配项数量,如果查询描述符的总可能匹配项少于 k 个,则为更少。指定输入查询描述符与第 i 个图像 trainDescCollection[i] 中存储的训练描述符之间允许的匹配项。如果为 false,则 `matches` 向量的大小与 `queryDescriptors` 的行数相同。如果 `compactResult` 为 true,则 `matches` 向量不包含完全被遮罩的查询描述符的匹配项。
-
radiusMatch
public void radiusMatch(Mat queryDescriptors, java.util.List<MatOfDMatch> matches, float maxDistance, java.util.List<Mat> masks, boolean compactResult)
- 参数
queryDescriptors- 查询描述符集。matches- 找到的匹配项。maxDistance- 匹配描述符之间距离的阈值。这里的距离是指度量距离(例如,汉明距离),而不是坐标之间的距离(以像素为单位测量)!masks- 掩码集。每个 masks[i] 指定输入查询描述符与第 i 个图像 trainDescCollection[i] 中存储的训练描述符之间允许的匹配项。compactResult- 当 `mask`(或多个 `masks`)不为空时使用的参数。如果 `compactResult` 为 false,则 `matches` 向量的大小与 `queryDescriptors` 的行数相同。如果 `compactResult` 为 true,则 `matches` 向量不包含完全被遮罩的查询描述符的匹配项。
-
radiusMatch
public void radiusMatch(Mat queryDescriptors, java.util.List<MatOfDMatch> matches, float maxDistance, java.util.List<Mat> masks)
- 参数
queryDescriptors- 查询描述符集。matches- 找到的匹配项。maxDistance- 匹配描述符之间距离的阈值。这里的距离是指度量距离(例如,汉明距离),而不是坐标之间的距离(以像素为单位测量)!masks- 掩码集。每个 masks[i] 指定输入查询描述符与第 i 个图像 trainDescCollection[i] 中存储的训练描述符之间允许的匹配项。如果为 false,则 `matches` 向量的大小与 `queryDescriptors` 的行数相同。如果 `compactResult` 为 true,则 `matches` 向量不包含完全被遮罩的查询描述符的匹配项。
-
radiusMatch
public void radiusMatch(Mat queryDescriptors, java.util.List<MatOfDMatch> matches, float maxDistance)
- 参数
queryDescriptors- 查询描述符集。matches- 找到的匹配项。maxDistance- 匹配描述符之间距离的阈值。这里的距离是指度量距离(例如,汉明距离),而不是坐标之间的距离(以像素为单位测量)!指定输入查询描述符与第 i 个图像 trainDescCollection[i] 中存储的训练描述符之间允许的匹配项。如果为 false,则 `matches` 向量的大小与 `queryDescriptors` 的行数相同。如果 `compactResult` 为 true,则 `matches` 向量不包含完全被遮罩的查询描述符的匹配项。
-
写
public void write(java.lang.String fileName)
-
read
public void read(java.lang.String fileName)
-
clone
public DescriptorMatcher clone(boolean emptyTrainData)
克隆匹配器。- 参数
emptyTrainData- 如果 `emptyTrainData` 为 false,该方法将创建对象的深拷贝,即复制参数和训练数据。如果 `emptyTrainData` 为 true,该方法将创建具有当前参数但训练数据为空的对象副本。- 返回
- 自动生成
-
clone
public DescriptorMatcher clone()
克隆匹配器。如果 `emptyTrainData` 为 false,则复制参数和训练数据。如果 `emptyTrainData` 为 true,则创建具有当前参数但训练数据为空的对象副本。- 重写
clone在类java.lang.Object中- 返回
- 自动生成
-
create
public static DescriptorMatcher create(java.lang.String descriptorMatcherType)
使用默认参数(使用默认构造函数)创建给定类型的描述符匹配器。- 参数
descriptorMatcherType- 描述符匹配器类型。目前支持以下匹配器类型:-
BruteForce(它使用 L2) -
BruteForce-L1 -
BruteForce-Hamming -
BruteForce-Hamming(2) -
FlannBased
-
- 返回
- 自动生成
-
create
public static DescriptorMatcher create(int matcherType)
-
-