Python+OpenCV图像处理—— ROI与泛洪填充

原图:

在这里插入图片描述

代码:

import cv2
import numpy as np

def file_colr(image):
    a=image.copy()
    h,w=image.shape[:2]
    mask=np.zeros([h+2,w+2],np.uint8)
    cv2.floodFill(a,mask,(30,30),(0,0,255),(100,100,100),(50,50,50),cv2.FLOODFILL_FIXED_RANGE)
    cv2.imshow("4",a)

def file_bfn():
    image=np.zeros([400,400,3],np.uint8)
    image[100:300,100:300,:]=255
    image[125:275,125:275]=(0,0,255)
    image[150:250, 150:250] = (255, 0, 0)
    image[175:225, 175:225] = (0, 255, 255)
    cv2.rectangle(image,(50,50),(350,350),255,5)
    cv2.imshow("5",image)

    # mask=np.ones([402,402,1],np.uint8)
    # mask[101:301,101:301]=0
    # cv2.floodFill(image,mask,(200,200),(100,2,255),cv2.FLOODFILL_MASK_ONLY)
    # cv2.imshow('6',mask)

img=cv2.imread("2.jpg")
cv2.imshow("l",img)

fac=img[100:400,100:400]
# cv2.imshow('2',fac)

aa=cv2.cvtColor(fac,cv2.COLOR_BGR2GRAY)
bb=cv2.cvtColor(aa,cv2.COLOR_GRAY2BGR)

img[100:400,100:400]=bb

# cv2.imshow('3',img)

file_bfn()

cv2.waitKey(0)

运行效果:

在这里插入图片描述
无法上传QQ截图

泛洪填充算法也叫漫水填充算法。
opencv的floodFill函数原型: floodFill(image, mask, seedPoint, newVal[, loDiff[, upDiff[, flags]]]) -> retval, image, mask, rect

floodFill( 1.操作的图像, 2.掩模, 3.起始像素值,4.填充的颜色, 5.填充颜色的低值, 6.填充颜色的高值 ,7.填充的方法)

image参数表示输入/输出1或3通道,8位或浮点图像。
  mask参数表示掩码,该掩码是单通道8位图像,比image的高度多2个像素,宽度多2个像素。填充时不能穿过输入掩码中的非零像素。
  seedPoint参数表示泛洪算法(漫水填充算法)的起始点。
  newVal参数表示在重绘区域像素的新值。
  loDiff参数表示当前观察像素值与其部件邻域像素值或待加入该组件的种子像素之间的亮度或颜色之负差的最大值。
  upDiff参数表示当前观察像素值与其部件邻域像素值或待加入该组件的种子像素之间的亮度或颜色之正差的最大值。
  flags参数:操作标志符,包含三部分:(flags参数可参考
    低八位(0~7位):用于控制算法的连通性,可取4(默认)或8。
    中间八位(8~15位):用于指定掩码图像的值,但是如果中间八位为0则掩码用1来填充。
    高八位(16~32位):可以为0或者如下两种标志符的组合:
    FLOODFILL_FIXED_RANGE:表示此标志会考虑当前像素与种子像素之间的差,否则就考虑当前像素与相邻像素的差。FLOODFILL_MASK_ONLY:表示函数不会去填充改变原始图像,而是去填充掩码图像mask,mask指定的位置为零时才填充,不为零不填充。

参数3起始点的像素值减去参数5的像素值表示的是从起始点开始搜索周边范围的像素最低值,
参数3起始点的像素值加上参数5的像素值表示的是从起始点开始搜索周边范围的像素最大值。
有了这个范围,然后该函数就可以在这个连续像素范围内填充指定的颜色newVal参数值。

参数5.填充颜色的低值就是:
参数3 减去 参数5
参数6.填充颜色的高值就是:
参数3 加上 参数6
即是这两个数值之间的色素替换为参数4的颜色

4.设置FLOODFILL_FIXED_RANGE – 改变图像,泛洪填充
设置FLOODFILL_MASK_ONLY – 不改变图像,只填充遮罩层本身,忽略新的颜色值参数

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大胖东

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值