python实现opencv学习十:floodFill填充函数函数 您所在的位置:网站首页 flood图片 python实现opencv学习十:floodFill填充函数函数

python实现opencv学习十:floodFill填充函数函数

2024-06-22 18:59| 来源: 网络整理| 查看: 265

指定颜色填充:

代码如下:

# -*- coding=GBK -*- import cv2 as cv import numpy as np #指定颜色替换 def fill_image(image): copyImage = image.copy()#复制原图像 h, w = image.shape[:2]#读取图像的宽和高 mask = np.zeros([h+2, w+2], np.uint8)#新建图像矩阵 +2是官方函数要求 cv.floodFill(copyImage, mask, (0, 80), (0, 100, 255), (100, 100, 50), (50, 50, 50), cv.FLOODFILL_FIXED_RANGE) cv.imshow("填充", copyImage) src = cv.imread("C://1.jpg") cv.imshow("原来", src) fill_image(src) cv.waitKey(0) cv.destroyAllWindows()

运行结果:

说明如下:

floodFill函数:漫水填充算法:我觉得叫颜色替换好一些

官方定义为:floodFill(InputOutputArray image, Point seedPoint, Scalar newVal, Rect* rect=0, Scalar loDiff=Scalar(), Scalar upDiff=Scalar(), int flags=4 ) 

不知道为啥,python中调用这个函数,Rect* rect=0这个参数没有,剩下7个参数 

通俗解释:floodFill( 1.操作的图像, 2.掩模, 3.起始像素值,4.填充的颜色, 5.填充颜色的低值, 6.填充颜色的高值 ,7.填充的方法)

视频讲解如下:

参数5.填充颜色的低值就是:参数3 减去 参数5

参数6.填充颜色的高值就是:参数3 加上 参数6

即是这两个数值之间的色素替换为参数4的颜色

疑问就是:参数3,5,6的个数都不一样,不太懂怎么减去的? 以后知道了再补充!

7.填充的方法

  彩色图像一般是FLOODFILL_FIXED_RANGE 指定颜色填充

还有一种是FLOODFILL_MASK_ONLY,mask的指定的位置为零时才填充,不为零不填充

函数操作如下:

#指定位置填充 def fill2_image(): image = np.zeros([200, 200, 3], np.uint8) #image[100:300, 100:300, :] = 255 cv.imshow("原图", image) mask = np.ones([202, 202, 1], np.uint8) mask[100:150, 100:150] = 0 cv.floodFill(image, mask, (100, 100), (0, 0, 255), cv.FLOODFILL_MASK_ONLY) cv.imshow("填充2", image)

调用函数输出如下:



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有