opecv技巧函数

cv2.floodFill

cv2.floodFill(img,mask,seed,newvalue(BGR),(loDiff1,loDiff2,loDiff3),(upDiff1,upDiff2,upDiff3),flag)
  • img:为待使用泛洪算法的图像
  • mask:为掩码层,使用掩码可以规定是在哪个区域使用该算法,如果是对于完整图像都要使用,则掩码层大小为原图行数+2,列数+2.是一个二维的0矩阵,边缘一圈会在使用算法是置为1。而只有对于掩码层上对应为0的位置才能泛洪,所以掩码层初始化为0矩阵。
  • seed:为泛洪算法的种子点,也是根据该点的像素判断决定和其相近颜色的像素点,是否被泛洪处理。
  • newvalue:是对于泛洪区域新赋的值(B,G,R)
  • (loDiff1,loDiff2,loDiff3):是相对于seed种子点像素可以往下的像素值,即seed(B0,G0,R0),泛洪区域下界为(B0-loDiff1,G0-loDiff2,R0-loDiff3)
  • (upDiff1,upDiff2,upDiff3):是相对于seed种子点像素可以往上的像素值,即seed(B0,G0,R0),泛洪区域上界为(B0+upDiff1,G0+upDiff2,R0+upDiff3)
    在这里插入图片描述

代码演示

import numpy as np
import cv2

if __name__ == "__main__":
    img = cv2.imread(r"C:\Users\A\Desktop\1.jpg")
    copyImg = img.copy()
    img_h, img_w, _ = np.shape(img)
    mask = np.zeros((img_h+2,img_w+2),dtype=np.uint8)
    cv2.rectangle(mask, (50,50), (150,150),(255))
    centerx = 100
    centery = 100
    cv2.floodFill(copyImg, mask, (100, 100), (0, 255, 255), (255, 255, 255), (255, 255, 255), cv2.FLOODFILL_FIXED_RANGE)

示例图片

在这里插入图片描述 在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42486685/article/details/84937458