前提条件
使用工具python3.x
使用库numpy;opencv,
api简介
1.cv.floodFill
对所选某一区域进行填充颜色,参数解释具体看代码
代码示例
import cv2 as cv
import numpy as np
def fillColorDemo(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, 255), (100,100,100),(50,50,50), cv.FLOODFILL_FIXED_RANGE)
#给颜色值在(30, 30)+(100,100,100)~~~(30, 30)+(50,50,50)范围内填充黄色
cv.imshow('fill_color_demo',copyImg)
def fillBinary():
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 #对领部分填充
#(0,0,255)填充成的颜色
cv.floodFill(image, mask, (200,200), (0,0,255),cv.FLOODFILL_MASK_ONLY)
cv.imshow('filled binary',image) #对图像进行填充
src=cv.imread("D:/openCV_image/image/1.png")
# print(src)
# cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
# cv.imshow("input image",src)
# #显示部分头像
# face = src[20:150, 50:200]
# cv.imshow("face", face)
# #变灰度图像
# gray = cv.cvtColor(face, cv.COLOR_BGR2GRAY)
# cv.imshow("gray", gray)
# #把灰度图像还原回来
# backface = cv.cvtColor(gray, cv.COLOR_GRAY2BGR) #图片,宏定义值
# src[20:150, 50:200] = backface #同理也可以将结果返回大图去
# cv.imshow("backface", backface)
# fillColorDemo(src) #泛洪填充
fillBinary()
cv.waitKey(0)
cv.destroyAllWindows()