opencv区域填充python
时间: 2023-10-05 16:09:21 浏览: 110
dilation.zip
使用OpenCV中的cv2.floodFill()函数可以在Python中实现区域填充。
函数原型:
```
cv2.floodFill(image, mask, seedPoint, newVal, loDiff=None, upDiff=None, flags=None)
```
参数说明:
- image:输入图像,必须是8位、单通道、灰度图像。
- mask:操作掩膜,如果不为None,则必须为8位、单通道的图像,大小与输入图像相同,用于指定填充区域。如果为None,则默认为完整的输入图像。
- seedPoint:起始点,即开始填充的像素点坐标(x,y)。
- newVal:填充颜色,可以是一个标量值或一个长度为1的元组,表示灰度值(0~255)。
- loDiff、upDiff:两个可选参数,表示颜色空间中的低和高颜色差值,如果给定这两个值,则填充颜色必须落在这个颜色范围内。
- flags:填充算法的标志,可以是以下值的组合:
- cv2.FLOODFILL_FIXED_RANGE:表示填充时考虑当前像素与邻域像素之间的颜色差值。
- cv2.FLOODFILL_MASK_ONLY:表示只填充掩膜区域内的像素,而不填充原图像。
返回值:
- retval:填充的像素数量。
示例代码:
```python
import cv2
# 读取图像
img = cv2.imread('example.jpg', 0)
# 创建一个相同大小的掩膜
h, w = img.shape[:2]
mask = np.zeros((h+2, w+2), np.uint8)
# 填充区域
cv2.floodFill(img, mask, (50, 50), 255, cv2.FLOODFILL_FIXED_RANGE)
# 显示结果
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这段代码会将x=50,y=50处的像素点所在的区域进行填充,填充颜色为白色(255)。
阅读全文