OpenCV之漫水填充算法(Python实现)

首先看看floodFill()的算法原型

def floodFill(image, mask, seedPoint, newVal, loDiff=None, upDiff=None, flags=None)
第一个参数image为原图像
第二个参数mask为掩模
第三个参数SeedPoint为随机初始种子
第四个参数为低值
第五个参数为高值
第六个参数为选项,即填充方法,FLOODFILL_FIXED_RANGE 指定填充的颜色
FLOODFILL_MASK_ONLY,mask的指定的位置为零时才填充,不为0不填充

分别看看这两个函数的例子:

def fill_color_demo(image):
    copyImage = image.copy()
    h, w = copyImage.shape[:2]
    mask = np.zeros([h+2, w+2], np.uint8) // 这里必须为 h+2,w+2
    cv.floodFill(copyImage, mask, (20, 20), (0, 125, 125), (100, 100, 100), (50, 50, 50), cv.FLOODFILL_FIXED_RANGE)
    cv.imshow("fill_color_demo", copyImage)

这个意思就是选取一个随机种子(20,20),然后在低值和高值范围内,就把颜色改为(0,125,125)。
我们看运行结果:
在这里插入图片描述

FLOODFILL_MASK_ONLY另外一种模式

mask指定的位置为0时填充,非0则不填充。

def fill_binary():
    image = np.zeros([400, 400, 3], np.uint8)
    image[100:200, 100:200, :] = 255
    #cv.imshow("fill_binary", image)
    mask = np.ones([402, 402, 1], np.uint8)
    mask[101:201, 101:201] = 0
    cv.floodFill(image, mask, (105, 105), (100, 23, 200), cv.FLOODFILL_MASK_ONLY)
    cv.imshow("fill_binary1", image)

我们自己生成一个图像,然后在里面划分一块分成白色,然后我们对这块设置掩摸为0,然后就会把这块渲染成自己定义的像素(100, 23, 200)。

结果:

在这里插入图片描述
里面具体的细节,以后在了解。

参考
视频链接

全部评论

相关推荐

Hello_WordN:咱就是说,除了生命其他都是小事,希望面试官平安,希望各位平时也多注意安全
点赞 评论 收藏
分享
Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务