opencv 区域填充
时间: 2023-07-04 08:25:49 浏览: 126
在 OpenCV 中,可以使用 `cv2.floodFill()` 函数进行区域填充。
该函数需要以下参数:
- `image`:需要填充的图像,必须是 8 位单通道图像,可以通过 `cv2.cvtColor()` 进行转换。
- `mask`:掩膜图像,必须与 `image` 大小一致,可以使用 `np.zeros()` 创建。
- `seedPoint`:种子点,从该点开始填充。
- `newVal`:填充的新值。
- `loDiff`:低阈值差值,若当前像素值与种子点像素值之差小于该值,则进行填充。
- `upDiff`:高阈值差值,若当前像素值与种子点像素值之差大于该值,则不进行填充。
- `flags`:填充方式,可以为 4 连通或 8 连通。
- `mask`:掩膜图像,如果为 `None`,则不使用掩膜。
以下是一个使用 `cv2.floodFill()` 函数进行区域填充的示例代码:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('example.jpg', cv2.IMREAD_GRAYSCALE)
# 创建掩膜图像
h, w = img.shape[:2]
mask = np.zeros((h+2, w+2), np.uint8)
# 定义种子点
seed_point = (100, 100)
# 定义填充的新值
new_val = 255
# 定义阈值差值
lo_diff, up_diff = 30, 30
# 定义填充方式
flags = 4
# 进行区域填充
cv2.floodFill(img, mask, seed_point, new_val, lo_diff, up_diff, flags)
# 显示填充后的图像
cv2.imshow('Flood Fill', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上述代码中,我们读取了一张灰度图像,并使用 `np.zeros()` 创建了掩膜图像。然后,我们定义了种子点、填充的新值、阈值差值和填充方式,并使用 `cv2.floodFill()` 函数进行区域填充。最后,我们显示了填充后的图像。
阅读全文