openCV编程基础5--ROI与泛洪填充

主要功能:

1.选图片的感兴趣区域(ROI),对感兴趣区域进行处理

2.泛洪填充-彩色图像进行(连通填充)

3.泛洪填充--二值填充

import cv2 as cv
import numpy as np


#选图片的感兴趣区域(ROI),对感兴趣区域进行处理
def roi_demo(image):
    face = image[35:290,45:260]       #把脸部提取出来
    gray = cv.cvtColor(face,cv.COLOR_BGR2GRAY)
    backface = cv.cvtColor(gray,cv.COLOR_GRAY2BGR)   #黑白转换为彩色图,只是从单通道变为多通道,还是黑白的
    image[35:290, 45:260] = backface    #把原来的部分用黑白的替换掉
    cv.imshow('face',backface)
    cv.imshow('roi_deom',image)


#泛洪填充-彩色图像进行(连通填充)
def fill_color_demo(image):
    copyImg = image.copy()
    h,w = image.shape[:2]   #这里是把彩色图像的高和宽提取出来
    mask = np.zeros([h+2,w+2],np.uint8)   #mask就是要进行+2处理,类型必须是uint8(必须是单通道8位)
    cv.floodFill(copyImg,mask,(1,1),(0,255,0),(100,100,100),(50,50,50),cv.FLOODFILL_FIXED_RANGE)
    #floodFill,这个函数,(1,1)代表要处理图像的起始点;(0,255,0)代表要填充的颜色,
    #(100,100,100)代表低值,即(1,1)这个点的像素值各通道减去100,
    #(50,50,50)代表高值,即(1,1)这个点的像素值各通道加上50。
    #以(1,1)位置为起始点,搜索填充
    cv.imshow('fill_color_demo',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,1],np.uint8)
    mask[101:301,101:301] = 0
    cv.floodFill(image,mask,(200,200),(0,255,0),cv.FLOODFILL_MASK_ONLY)
    #这个位置要注意,FLOODFILL_MASK_ONLY填充区域必须是无值才会填充
    cv.imshow('fill binary',image)


src = cv.imread('F:001.jpg')
#cv.namedWindow('input_image', cv.WINDOW_AUTOSIZE)
cv.imshow("0", src)
# roi_demo(src)           #选图片的感兴趣区域(ROI),对感兴趣区域进行处理
# fill_color_demo(src)    #泛洪填充-彩色图像进行(连通填充)
fill_binary()           #泛洪填充--二值填充
cv.waitKey(0)
cv.destroyAllWindows()

输出结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值