如何用分水岭分割算法批量分割图像利用python,举例子
时间: 2024-05-11 21:15:29 浏览: 99
可以使用 OpenCV 库中的 Watershed 算法进行分割。以下是 Python 代码示例:
```python
import cv2
# 读入图像
img = cv2.imread('image.jpg')
# 转换为灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 进行阈值分割,得到二值图像
_, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
# 进行形态学操作,消除噪点
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
morph = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel, iterations=2)
# 进行距离变换,得到距离图像
dist = cv2.distanceTransform(morph, cv2.DIST_L2, 5)
# 进行掩码操作,得到标签图像
_, labels = cv2.connectedComponents(morph)
# 标签图像加 1,避免 0 作为分水岭区域
labels = labels + 1
# 定义分水岭标记图像
mark = cv2.watershed(img, labels)
# 根据分水岭标记图像分割图像
result = cv2.bitwise_and(img, img, mask=(mark == 1).astype('uint8') * 255)
# 显示结果
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
以上代码中的 `image.jpg` 是待分割的图像文件名,可替换为其他文件名。
阅读全文