C++ 计算两个描述符之间的距离

C++ 计算两个描述符之间的距离,c++,opencv,euclidean-distance,hamming-distance,feature-descriptor,C++,Opencv,Euclidean Distance,Hamming Distance,Feature Descriptor,我试图计算两个已经计算过的描述符之间的欧几里德或哈明距离。问题是我不想使用匹配器,我只想计算两个描述符之间的距离。 我使用的是OpenCV 2.4.9,我的描述符存储在Mat类型中: Mat descriptors1; Mat descriptors2; 现在我只想计算距离,最好是汉明距离,因为我使用的是描述符1的第1行和描述符2的第1行之间的二进制描述符 我曾尝试使用按位异或函数,但没有一种有效的方法进行位计数。没有计算两个阵列之间的汉明距离的函数 我注意到我对OpenCV相当陌生,但我非

我试图计算两个已经计算过的描述符之间的欧几里德或哈明距离。问题是我不想使用匹配器,我只想计算两个描述符之间的距离。 我使用的是OpenCV 2.4.9,我的描述符存储在Mat类型中:

Mat descriptors1;
Mat descriptors2; 
现在我只想计算距离,最好是汉明距离,因为我使用的是描述符1的第1行和描述符2的第1行之间的二进制描述符

我曾尝试使用按位异或函数,但没有一种有效的方法进行位计数。没有计算两个阵列之间的汉明距离的函数

我注意到我对OpenCV相当陌生,但我非常感谢任何帮助。谢谢

您可以使用opencv的函数来完成此操作

Mat descriptors1;
Mat descriptors2; 

double dist_l2  = norm(descriptors1,descriptors2,NORM_L2);      // l2 for surf,sift
double dist_ham = norm(descriptors1,descriptors2,NORM_HAMMING); // for ORB,BRIEF,etc.
您可以使用opencv的函数进行此操作

Mat descriptors1;
Mat descriptors2; 

double dist_l2  = norm(descriptors1,descriptors2,NORM_L2);      // l2 for surf,sift
double dist_ham = norm(descriptors1,descriptors2,NORM_HAMMING); // for ORB,BRIEF,etc.

范数的选择可能取决于描述符的配置方式,例如ORB,请参阅此答案:。范数的选择可能取决于描述符的配置方式,例如ORB,请参阅此答案:。