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

esa*_*wan 1 python opencv distance

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

#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()  
Run Code Online (Sandbox Code Playgroud)

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

CD距离是知道的。 AB 不详。

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

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

ven*_*nan 7

从 C 到 D 计算欧几里得,并找到与已知测量值的比率。

比率 = 已知/欧几里得

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

距离 = 欧几里得 * 比率

欧几里得“sqrt((x2-x1)**2+(y2-y1)**2)”