泛洪填充 cv.floodfill

#泛洪填充

import cv2 as cv;
import numpy as np

def fill_color(image):
    copyImage=image.copy()
    h,w=image.shape[:2]
    mask=np.zeros([h+2,w+2],np.uint8)
    cv.floodFill(copyImage,mask,(30,30),(0,255,255),(255,100,100),(50,50,50),cv.FLOODFILL_FIXED_RANGE)
    cv.imshow("fill_color",copyImage)

def fill_binary():
    image=np.zeros([400,400,3],np.uint8)
    image[100:300,100:300,:]=255
    cv.imshow("fill_binary",image)

    mask=np.ones([402,402,1],np.uint8)
    mask[101:301,101:301]=0
    cv.floodFill(image,mask,(200,200),(0,0,255),cv.FLOODFILL_MASK_ONLY)
    cv.imshow("filled binary",image)

src=cv.imread("reba.png")
cv.namedWindow("yuantu",cv.WINDOW_AUTOSIZE)

cv.imshow("yuantu",src)
fill_binary()
fill_color(src)
cv.waitKey(0)
cv.destroyAllWindows()

参考学习泛洪填充连接

参考学习2

第二次自学代码

import cv2 as cv
import numpy as np


#src=cv.imread('../image/person.jpg')
#first_point=(350,140)
#width=878
#height=890
#roi=src[first_point[1]:first_point[1]+width,first_point[0]:first_point[0]+height]
#cv.imshow('target_image',roi)
#cv.imwrite('../image/person_roi.png',roi)

def floodfill_color(src):
    start_point=(70,10)
    width=300
    height=360
    #src[h,w]  图片【高度,宽度】
    roi=src[10:10+360,70:70+300]
    #获取图片(高度,宽度,通道数目)(360,300,3)
    print(roi.shape)
    #更改g通道颜色
    #sroi[:,:,1]=127
    #cv.imshow('roi',roi)
    #复制图片
    copyImage=roi.copy()
    #获取复制图片的 高度和宽度
    h,w=roi.shape[:2]
    #制作一张遮罩图 这张这招图 必须是宽度 和 高度 都要多2个像素,数字类型跟复制图一样
    mask=np.zeros([h+2,w+2],roi.dtype)
    #floodfill           复制图  遮罩   种子点     填充颜色    低于种子点的颜色范围  高范围  类型标签
    target=cv.floodFill(copyImage,mask,(20,50),(255,127,127),(40,40,40),(50,50,50),cv.FLOODFILL_FIXED_RANGE)
    cv.imshow('copyImage', copyImage)


def floodfill_mask(src):
    h, w = src.shape[:2]
    src[:,:,:]=255
    mask = np.zeros([h + 2, w + 2,1], src.dtype)
    cv.imshow('copyImage', src)
    cv.floodFill(src,mask,(180,150),(0,0,255),cv.FLOODFILL_MASK_ONLY)
    cv.imshow('floodfill_image', src)


def floodfill_mask2():
    #新建图像需要设定通道数
    src=np.zeros([400,400,3],np.uint8)
    src[:,:,:]=255
    cv.imshow('new',src)
    h,w=src.shape[:2]
    #遮罩层的通道 数目为1
    mask=np.zeros([h+2,w+2,1],np.uint8)
    cv.floodFill(src,mask,(200,200),(0,0,127),cv.FLOODFILL_MASK_ONLY)
    cv.imshow('flood_new',src)


src=cv.imread('../image/person_roi.png')
floodfill_mask(src)
#floodfill_mask2()
cv.waitKey()
cv.destroyAllWindows()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值