漫水填充(cv2.fooldFill())--FLOODFILL_FIXED_RANGE与FLOODFILL_MASK_ONLY的区别

1.漫水填充的定义: 漫水填充法是一种用特定的颜色填充联通区域,通过设置可连通像素的上下限以及连通方式来达到不同的填充效果的方法。漫水填充经常被用来标记或分离图像的一部分以便对其进行进一步处理或分析,也可以用来从输入图像获取掩码区域,掩码会加速处理过程,或只处理掩码指定的像素点,操作的结果总是某个连续的区域。
2.漫水填充的思想: 所谓漫水填充,简单来说,自动选中了和种子点相连的区域,接着将该区域替换成指定的颜色,是个非常有用的功能,经常用来标记或者分离图像的一部分进行处理或分析.漫水填充也可以用来从输入图像获取掩码区域,掩码会加速处理过程,或者只处理掩码指定的像素点。
3.fooldFill():

floodFill(image, mask, seedPoint, newVal, loDiff=None, upDiff=None, flags=None)

通俗解释:floodFill( 1.操作的图像, 2.掩模, 3.起始像素值,4.填充的颜色, 5.填充颜色的低值, 6.填充颜色的高值 ,7.填充的方法)
下面用两个例子说明:
cv.FLOODFILL_FIXED_RANGE: 指定颜色填充

def fill_color_demo(image):
    copyIma = image.copy()
    h, w = image.shape[:2]
    print(h, w)
    mask = np.zeros([h+2, w+2], np.uint8)
    cv2.floodFill(copyIma, mask, (30, 30), (0, 255, 255), (100, 100, 100), (50, 50, 50), cv2.FLOODFILL_FIXED_RANGE)  
    cv2.imshow("fill_color", copyIma)
    
src = cv2.imread("C:/Users/myJupyter/pic/test.png")
cv2.namedWindow("input image", cv2.WINDOW_AUTOSIZE)
cv2.imshow("input image", src)
fill_color_demo(src)    
cv2.waitKey(0)
cv2.destroyAllWindows()
  • 填充颜色的判断依据:
    src(seed.x’, seed.y’) - loDiff <= src(x, y) <= src(seed.x’, seed.y’) +upDiff
  • 运行结果:
    在这里插入图片描述
    cv.FLOODFILL_MASK_ONLY: 指定位置填充
import cv2 as cv
def fill_binary():
    image = np.zeros([300, 300, 3], np.uint8)
    image[100:300, 100:300, : ] = 255
    cv.imshow("fill_binary", image)
    mask = np.ones([302, 302, 1], np.uint8)#注意边缘加2
    mask[101:301, 101:301] = 0
    cv.floodFill(image, mask, (200, 200), (0, 0, 255), cv.FLOODFILL_MASK_ONLY)#红色
    cv.imshow("filled binary", image)
fill_binary()
cv.waitKey(0)
cv.destroyAllWindows()
发布了59 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Galen_xia/article/details/103455683
今日推荐