读取图像rice.jpg基于分水岭算法实现图像分割python代码
时间: 2024-10-18 20:24:36 浏览: 24
分水岭图像分割算法 的Python实现_python_代码_下载
5星 · 资源好评率100%
在Python中,我们可以使用OpenCV库来实现基于分水岭(Watershed Algorithm)的图像分割,这里是一个基本的例子,假设你已经安装了`opencv-python`库:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('rice.jpg', 0) # 使用灰度模式读取,因为分水岭通常用于二值图像
if img is None:
print("图片加载失败")
else:
# 对图像进行预处理,例如二值化
_, thresh = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU) # Otsu's thresholding自动确定阈值
# 寻找轮廓,这将作为种子点
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 创建标记数组
markers = np.zeros_like(img)
for contour in contours:
# 应用轮廓到标记数组上,每个轮廓会形成一个区域
cv2.drawContours(markers, [contour], -1, 255, -1)
# 进行分水岭运算
ws = cv2.watershed(img, markers)
# 显示结果
result = cv2.add(img, np.where(ws == -1, 255, 0).astype(np.uint8)) # 将ws=-1的地方设为白色,表示分割区域
cv2.imshow('Segmented Image', result)
cv2.
阅读全文