类 DescriptorMatcher
- java.lang.Object
-
- org.opencv.core.Algorithm
-
- org.opencv.features2d.DescriptorMatcher
-
- 直接已知子类
BFMatcher
,FlannBasedMatcher
public class DescriptorMatcher extends Algorithm
关键点描述符匹配的抽象基类。它有两组匹配方法:用于将图像的描述符与另一幅图像或一组图像进行匹配。
-
-
字段摘要
字段 修饰符和类型 字段 描述 static int
BRUTEFORCE
static int
BRUTEFORCE_HAMMING
static int
BRUTEFORCE_HAMMINGLUT
static int
BRUTEFORCE_L1
static int
BRUTEFORCE_SL2
static int
FLANNBASED
-
构造函数摘要
构造函数 修饰符 构造函数 描述 protected
DescriptorMatcher(long addr)
-
方法摘要
所有方法 静态方法 实例方法 具体方法 修饰符和类型 方法 描述 static DescriptorMatcher
__fromPtr__(long addr)
void
add(java.util.List<Mat> descriptors)
添加描述符以训练 CPU(trainDescCollectionis) 或 GPU(utrainDescCollectionis) 描述符集合。void
clear()
清除训练描述符集合。DescriptorMatcher
clone()
克隆匹配器。DescriptorMatcher
clone(boolean emptyTrainData)
克隆匹配器。static DescriptorMatcher
create(int matcherType)
static DescriptorMatcher
create(java.lang.String descriptorMatcherType)
使用默认参数(使用默认构造函数)创建给定类型的描述符匹配器。boolean
empty()
如果两个集合中都没有训练描述符,则返回 true。protected void
finalize()
java.util.List<Mat>
getTrainDescriptors()
返回指向训练描述符集合 trainDescCollection 的常量链接。boolean
isMaskSupported()
如果描述符匹配器支持屏蔽允许的匹配,则返回 true。void
knnMatch(Mat queryDescriptors, java.util.List<MatOfDMatch> matches, int k)
void
knnMatch(Mat queryDescriptors, java.util.List<MatOfDMatch> matches, int k, java.util.List<Mat> masks)
void
knnMatch(Mat queryDescriptors, java.util.List<MatOfDMatch> matches, int k, java.util.List<Mat> masks, boolean compactResult)
void
knnMatch(Mat queryDescriptors, Mat trainDescriptors, java.util.List<MatOfDMatch> matches, int k)
为查询集中的每个描述符查找 k 个最佳匹配。void
knnMatch(Mat queryDescriptors, Mat trainDescriptors, java.util.List<MatOfDMatch> matches, int k, Mat mask)
为查询集中的每个描述符查找 k 个最佳匹配。void
knnMatch(Mat queryDescriptors, Mat trainDescriptors, java.util.List<MatOfDMatch> matches, int k, Mat mask, boolean compactResult)
为查询集中的每个描述符查找 k 个最佳匹配。void
match(Mat queryDescriptors, MatOfDMatch matches)
void
match(Mat queryDescriptors, MatOfDMatch matches, java.util.List<Mat> masks)
void
match(Mat queryDescriptors, Mat trainDescriptors, MatOfDMatch matches)
为查询集中的每个描述符查找最佳匹配。void
match(Mat queryDescriptors, Mat trainDescriptors, MatOfDMatch matches, Mat mask)
为查询集中的每个描述符查找最佳匹配。void
radiusMatch(Mat queryDescriptors, java.util.List<MatOfDMatch> matches, float maxDistance)
void
radiusMatch(Mat queryDescriptors, java.util.List<MatOfDMatch> matches, float maxDistance, java.util.List<Mat> masks)
void
radiusMatch(Mat queryDescriptors, java.util.List<MatOfDMatch> matches, float maxDistance, java.util.List<Mat> masks, boolean compactResult)
void
radiusMatch(Mat queryDescriptors, Mat trainDescriptors, java.util.List<MatOfDMatch> matches, float maxDistance)
对于每个查询描述符,查找距离不超过指定距离的训练描述符。void
radiusMatch(Mat queryDescriptors, Mat trainDescriptors, java.util.List<MatOfDMatch> matches, float maxDistance, Mat mask)
对于每个查询描述符,查找距离不超过指定距离的训练描述符。void
radiusMatch(Mat queryDescriptors, Mat trainDescriptors, java.util.List<MatOfDMatch> matches, float maxDistance, Mat mask, boolean compactResult)
对于每个查询描述符,查找距离不超过指定距离的训练描述符。void
read(java.lang.String fileName)
void
训练()
训练描述符匹配器 训练描述符匹配器(例如,FLANN索引)。void
write(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。- 返回
- 自动生成
-
训练
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
- 当掩码(或掩码)不为空时使用的参数。如果 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
- 当掩码(或掩码)不为空时使用的参数。如果 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 的大小可能小于查询描述符的数量。
-
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
- 当掩码(或掩码)不为空时使用的参数。如果 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] 中存储的训练描述符之间允许的匹配。如果 compactResult 为 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,则数量更少。
-
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
- 当掩码(或掩码)不为空时使用的参数。如果 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] 中存储的训练描述符之间允许的匹配。如果 compactResult 为 false,则 matches 向量的大小与 queryDescriptors 行数相同。如果 compactResult 为 true,则 matches 向量不包含完全被屏蔽的查询描述符的匹配。
-
radiusMatch
public void radiusMatch(Mat queryDescriptors, java.util.List<MatOfDMatch> matches, float maxDistance)
- 参数
queryDescriptors
- 查询描述符集。matches
- 找到的匹配项。maxDistance
- 匹配描述符之间距离的阈值。这里的距离是指度量距离(例如,汉明距离),而不是坐标之间的距离(以像素为单位测量)!
-
写入
public void write(java.lang.String fileName)
-
读取
public void read(java.lang.String fileName)
-
clone
public DescriptorMatcher clone(boolean emptyTrainData)
克隆匹配器。- 参数
emptyTrainData
- 如果 emptyTrainData 为 false,则该方法会创建对象的深拷贝,即复制参数和训练数据。如果 emptyTrainData 为 true,则该方法会创建一个具有当前参数但训练数据为空的对象副本。- 返回
- 自动生成
-
clone
public DescriptorMatcher clone()
克隆匹配器。即复制参数和训练数据。如果 emptyTrainData 为 true,则该方法会创建一个具有当前参数但训练数据为空的对象副本。- 覆盖
- 类
java.lang.Object
中的clone
方法 - 返回
- 自动生成
-
创建
public static DescriptorMatcher create(java.lang.String descriptorMatcherType)
使用默认参数(使用默认构造函数)创建给定类型的描述符匹配器。- 参数
descriptorMatcherType
- 描述符匹配器类型。目前支持以下匹配器类型:-
BruteForce
(它使用 L2 距离) -
BruteForce-L1
-
BruteForce-Hamming
-
BruteForce-Hamming(2)
-
FlannBased
-
- 返回
- 自动生成
-
创建
public static DescriptorMatcher create(int matcherType)
-
-