源码:
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)
# floodFill()
# Parameter:
# image: 要浸水的图像
# mask: 掩模,浸水填充只会填充mask的零值像素区。
# seedPoint: 浸水算法起始像素位置。
# newVal: 像素点被染色的新值。
# loDiff: rgb-loDiff是会被染色的像素值下限。
# upDiff: rgb+upDiff是会被染色的像素值上限。
# flags:
cv.floodFill(copyImg, mask, (30, 30), (0, 255, 255), (100, 100, 100), (50, 50, 50), cv.FLOODFILL_FIXED_RANGE)
cv.imshow("fill_color_demo1", copyImg)
# 二值图像的填充
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], np.uint8)
mask[101:301, 101:301] = 0
cv.floodFill(image, mask, (200, 200), (100, 100, 255), cv.FLOODFILL_MASK_ONLY)
cv.imshow("filled binary", image)
print("----------Hello Python------------")
src = cv.imread("C:/cvtest/0000.jpg")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
# fill_color_demo(src)
fill_binary()
# # ROI
# face = src[50:250, 100:300]
# gray = cv.cvtColor(face, cv.COLOR_BGR2GRAY)
# backface = cv.cvtColor(gray, cv.COLOR_GRAY2BGR)
# src[50:250, 100:300] = backface
# cv.imshow("face", src)
cv.waitKey(0)
cv.destroyAllWindows()