opencv图像处理怎么找轮廓两点的距离
时间: 2023-11-07 11:04:47 浏览: 102
opencv 图像轮廓的实现示例
在OpenCV中,可以使用函数`cv2.arcLength()`和`cv2.approxPolyDP()`来计算轮廓的周长和近似多边形,然后使用函数`cv2.minEnclosingCircle()`来获取轮廓的最小外接圆,最后使用两点之间的距离公式计算两点之间的距离。
以下是一个示例代码,假设轮廓已经存储在变量`contour`中:
```python
import cv2
import numpy as np
# 计算轮廓的周长
perimeter = cv2.arcLength(contour, True)
# 近似轮廓为多边形
epsilon = 0.01 * perimeter
approx = cv2.approxPolyDP(contour, epsilon, True)
# 计算轮廓的最小外接圆
(x, y), radius = cv2.minEnclosingCircle(contour)
center = (int(x), int(y))
radius = int(radius)
# 获取轮廓两点之间的距离
dist = np.sqrt((approx[0][0][0] - approx[1][0][0]) ** 2 + (approx[0][0][1] - approx[1][0][1]) ** 2)
# 显示结果
cv2.circle(image, center, radius, (0, 255, 0), 2)
cv2.line(image, tuple(approx[0][0]), tuple(approx[1][0]), (0, 0, 255), 2)
cv2.putText(image, "Distance: {:.2f}".format(dist), (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)
cv2.imshow("Image", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个示例中,我们首先使用`cv2.arcLength()`函数计算轮廓的周长,然后使用`cv2.approxPolyDP()`函数将轮廓近似为一个多边形。接下来,我们使用`cv2.minEnclosingCircle()`函数获取轮廓的最小外接圆,并计算轮廓两点之间的距离。最后,我们使用`cv2.circle()`和`cv2.line()`函数绘制轮廓的最小外接圆和两点之间的直线,使用`cv2.putText()`函数显示距离值。
阅读全文