opencv图像处理怎么找轮廓两点的距离
时间: 2024-03-15 20:47:33 浏览: 52
在 OpenCV 中,可以使用 `cv2.arcLength()` 函数计算轮廓的周长,使用 `cv2.contourArea()` 函数计算轮廓的面积。如果要找到轮廓的两点之间的距离,可以使用 `cv2.norm()` 函数。
具体实现流程如下:
1. 读取图像,进行灰度化和二值化处理。
```python
import cv2
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
_, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
```
2. 查找轮廓。
```python
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
```
3. 遍历轮廓,计算轮廓的周长和面积,并绘制轮廓。
```python
for contour in contours:
perimeter = cv2.arcLength(contour, True)
area = cv2.contourArea(contour)
cv2.drawContours(img, [contour], -1, (0, 255, 0), 2)
```
4. 计算轮廓的两点之间的距离。
```python
dist = cv2.norm(contour[0][0], contour[-1][0])
```
其中,`contour[0][0]` 表示轮廓的第一个点,`contour[-1][0]` 表示轮廓的最后一个点。
完整代码示例:
```python
import cv2
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
_, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for contour in contours:
perimeter = cv2.arcLength(contour, True)
area = cv2.contourArea(contour)
cv2.drawContours(img, [contour], -1, (0, 255, 0), 2)
dist = cv2.norm(contour[0][0], contour[-1][0])
print('Distance between two points:', dist)
cv2.imshow('Image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文