#泛洪填充
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()
第二次自学代码
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()