如何在同一张图片上找到两点的长度

时间:2019-07-09 17:38:07

标签: opencv image-processing contour

我只是想使用开放式简历在同一张图片上找到两点之间的长度。有人可以帮我解决这个问题吗?

到目前为止,我所做的是:使用此代码示例获取图像的轮廓。

for cnt in contours:
    epsilon = 0.01* cv2.arcLength(cnt,True)
    approx = cv2.approxPolyDP(cnt,epsilon,True)
    img = cv2.drawContours(img, [approx], 0, (0,255,0), 3)

我真正需要的测量-使用红色的红色直线绘制的肩膀尺寸的长度。有什么方法可以检测到这两点并找到肩膀的长度。

预期:查找RED线的长度

enter image description here

1 个答案:

答案 0 :(得分:-1)

在2D图像A和B中分别给出2个点,分别具有像素坐标(xA,yA)和(xB,yB)(x代表列号,y代表行号)。

它们之间的距离是通过以下方式获得的:

formula distance 2 points

这是关于aboutPolyDP的文档: https://docs.opencv.org/4.1.0/d3/dc0/group__imgproc__shape.html#ga0012a5fdaea70b8a9970165d98722b4c

在文档中,您可能会注意到此函数的输出是一个点数组(按连接顺序排列)。

如果您仍未找到轮廓的哪些点是肩膀,则可以寻找最高点并使用阈值(头顶),然后再跳2个点。您可以轻松找出一种更可靠的方法。