基于已知测量的 OpenCv 中两点之间的距离

Distance between two points in OpenCv based on known measurement

我有一张图片,其中有两组坐标,我在它们之间画了一条线。

#Get image
im_res = requests.get(image_url)
img = Image.open(BytesIO(im_res.content))
img =  np.asarray(img)

#Draw first line
lineThickness = 3
cv.line(img, (ax, ay), (bx, by), (0,255,0), lineThickness)

#Draw second line
lineThickness = 3
cv.line(img, (cx, cy), (dx, dy), (0,255,0), lineThickness)

cv.imshow("Image", img)
cv.waitKey(0)
cv.destroyAllWindows()  

坐标是A,B,C&D,我知道C到D的距离,但是A到B的距离不知道。在 OpenCv 中计算这个的最佳方法是什么?

是否有特定于 OpenCv 的函数或方法来执行此操作?特别是我们正在考虑的距离是以像素为单位的?如果这个问题很愚蠢,我很抱歉,我真的不想因为对这个话题缺乏理解而最终得到错误的价值观。

我看到某些对 cv2.norm() 和 cv2.magnitude() 的引用作为此问题的解决方案。但是,我不太明白如何根据我的情况进行选择,请记住在这种情况下距离在 image/photo.

以内

计算 C 到 D 的欧几里得,并求出其与已知测量值的比值。

ratio = known / Euclidean

然后求A&B之间的欧几里得距离,并用早先找到的比值将欧几里得距离转换为实际距离。

distance = euclidean * ratio

euclidean "sqrt((x2-x1)**2+(y2-y1)**2)"