首页 > 其他 > 详细

floodFill填充函数函数(六)

时间:2019-07-15 10:57:52      阅读:208      评论:0      收藏:0      [点我收藏+]

 

一 函数原型

技术分享图片

参数解释:

  image 【输入/输出】1或者3通道、 8bit或者浮点图像。仅当参数flags的FLOODFILL_MASK_ONLY标志位被设置时image不会被修改,否则会被修改。

   mask 【输入/输出】 操作掩码,必须为单通道、8bit,且比image宽2个像素、高2个像素。使用前必须先初始化。Flood-filling无法跨越mask中的非0像素。例如,一个边缘检测的结果可以作为mask来阻止边缘填充。在输出中,mask中与image中填充像素对应的像素点被设置为1,或者flags标志位中设置的值(详见flags标志位的解释)。此外,该函数还用1填充了mask的边缘来简化内部处理。因此,可以在多个调用中使用同一mask,以确保填充区域不会重叠。

   seedPoint 起始像素点。

   newVal   重绘像素区域的新的填充值(颜色)。

   rect      可选输出参数,返回重绘区域的最小绑定矩形。

    loDiff     当前选定像素与其连通区中相邻像素中的一个像素,或者与加入该连通区的一个seedPoint像素,二者之间的最大下行差异值。

   upDiff    当前选定像素与其连通区中相邻像素中的一个像素,或者与加入该连通区的一个seedPoint像素,二者之间的最大上行差异值。

   flags     flags标志位是一个32bit的int类型数据,其由3部分组成: 0-7bit表示邻接性(4邻接、8邻接);8-15bit表示mask的填充颜色;16-31bit表示填充模式(详见填充模式解释)

 

  通俗解释:floodFill( 1.操作的图像, 2.掩模, 3.起始像素值,4.填充的颜色, 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("define", image)
    cv.imwrite(define.jpg,image)
    # mask 的高宽比原图多2,即h+2,w+2
    mask = np.ones([202, 202, 1], np.uint8)
    # mask需要填充的位置的像素设置为0
    mask[100:150, 100:150] = 0
    #调用floodFill函数填充 (0,0,255)指定红色填充
    cv.floodFill(image, mask, (100, 100), (0, 0, 255), cv.FLOODFILL_MASK_ONLY)
    cv.imshow("fill2", image)
    cv.imwrite(fill2.jpg,image)

fill2_image()
cv.waitKey(0)
cv.destroyAllWindows()

 

填充原理图

技术分享图片

 

三 指定颜色填充代码

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)
    #(0,80) 起始点,(0,100,255) 蓝色 ,(100,100,50)棕色 ,(50,50,50) 浅黑
    cv.floodFill(copyImage,mask,(0,80),(0,100,255),(100,100,50),(50,50,50),cv.FLOODFILL_FIXED_RANGE)
    cv.imshow(fill,copyImage)


src=cv.imread(./hua.jpg)
cv.imshow(before,src)
fill_image(src)
cv.waitKey(0)
cv.destroyAllWindows()

 

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

 

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

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

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

 

效果展示

技术分享图片

 

floodFill填充函数函数(六)

原文:https://www.cnblogs.com/angle6-liu/p/10658169.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!