两个向量之间的欧氏距离在OpenCV中的实现

12

我想计算两个向量(或两个矩阵行,无所谓)之间的欧几里得距离。在OpenCV中有没有一个好的函数可以做到这一点?

3个回答

28

是的。

Mat a,b; // num of rows/cols/channels does not matter, they just have to be equal for both

double dist = norm(a,b,NORM_L2);

这两个矩阵必须只有一行吗?是这样的吗? - farahm

4

同样适用于Python:

    dist = cv2.norm(pts - dst, cv2.NORM_L2)

1

来源:OpenCV,C++:两点之间的距离

Mat pts1(nPts, 1, CV_8UC2), pts2(nPts, 1, CV_8UC2);
// populate them
Mat diffPts = pts1-pts2;
Mat ptsx, ptsy;
// split your points in x and y vectors. maybe separate them from start
Mat dist;
magnitude(ptsx, ptsy, dist); // voila!

你为什么需要 diffPts 变量? - Scott
@Sherzod。这个答案是很久以前的,我不记得具体了。但是,从代码中可以看出,在计算diffPts之后,您可以将x部分提取到ptsx中,将y部分提取到ptsy中。最后,您可以使用magnitude函数。 - rafaoc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接