一、指定颜色填充:
(1)代码如下:
#导入cv模块
import cv2 as cv
import numpy as np
#泛洪填充
def fill_color_demo(image): #彩色图片的填充
copyImg=image.copy()
h,w=image.shape[:2]
mask=np.zeros([h+2,w+2],np.uint8)
cv.floodFill(copyImg,mask,(30,30),(0,255,2555),(100,100,100),(50,50,50),cv.FLOODFILL_FIXED_RANGE)
cv.imshow("fill_color_demo",copyImg)
print("------------Hi,Python!-------------")
# 读取图像,支持 bmp、jpg、png、tiff 等常用格式
src = cv.imread("F:/Projects/images/2.jpg")
#创建窗口并显示图像
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
cv.imshow("input image",src) #显示原图
fill_color_demo(src)
cv.waitKey(0)
#释放窗口
cv.destroyAllWindows()
(2)效果:
(3)说明
floodFill函数:漫水填充算法:我觉得叫颜色替换好一些
官方函数原型:floodFill(image, mask, seedPoint, newVal, loDiff=None, upDiff=None, flags=None):
通俗解释:floodFill( 1.操作的图像, 2.掩模, 3.起始像素值,4.填充的颜色, 5.填充颜色的低值, 6.填充颜色的高值 ,7.填充的方法)
(4)填充的方法
彩色图像一般是FLOODFILL_FIXED_RANGE 指定颜色填充
还有一种是FLOODFILL_MASK_ONLY,mask的指定的位置为零时才填充,不为零不填充
函数操作如下:
#导入cv模块
import cv2 as cv
import numpy as np
def fill_binary(): #二值填充
image=np.zeros([400,400,3],np.uint8)
image[101:301,101:301,:2]=0
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),(100,2,255),cv.FLOODFILL_MASK_ONLY)
cv.imshow("fill_binary", image)
print("------------Hi,Python!-------------")
# 读取图像,支持 bmp、jpg、png、tiff 等常用格式
src = cv.imread("F:/Projects/images/2.jpg")
#创建窗口并显示图像
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
cv.imshow("input image",src) #显示原图
fill_binary()
"""
face=src[50:150,30:140]
gray=cv.cvtColor(face,cv.COLOR_BGR2GRAY)#转为灰度图片
backface=cv.cvtColor(gray,cv.COLOR_GRAY2BGR)#转为RGB
src[50:150,30:140]=backface
cv.imshow("face",src)
"""
cv.waitKey(0)
#释放窗口
cv.destroyAllWindows()
效果: