06.opencv的ROI与泛洪填充

ROI(region of interest)

感兴趣区域,如果你设置了图像了ROI,那么在使用OpenCV的函数的时候,会只对ROI区域操作。

泛洪填充算法(Flood Fill Algorithm)

泛洪填充算法又称洪水填充算法是在很多图形绘制软件中常用的填充算法,最熟悉不过就是windows paint的油漆桶功能。算法的原理很简单,就是从一个点开始附近像素点,填充成新的颜色,直到封闭区域内的所有像素点都被填充新颜色为止。泛红填充实现最常见有四邻域像素填充法,八邻域像素填充法,基于扫描线的像素填充方法。根据实现又可以分为递归与非递归(基于栈)。

#coding:utf-8
#file: tutorial_5.py
#@author: young
#@contact: [email protected]
#@time: 2019/12/14 23:07
import  cv2 as cv
import  numpy as np
src = cv.imread("lena.jpg")
cv.imshow("input images",src)
image1 = src[50:250,100:300]
#开始区域,结束区域
gray = cv.cvtColor(image1,cv.COLOR_BGR2GRAY)
#取固定区域为灰色图
backface = cv.cvtColor(gray,cv.COLOR_GRAY2BGR)
src[50:250,100:300] = backface
#将灰色图还原到取的区域
cv.imshow("image1",src)
cv.waitKey()
cv.destroyAllWindows()

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

填充颜色:

def fill_color_demo(image):
    copyImg = image.copy()
    h, w = image.shape[:2]
    #读取宽高
    mask = np.zeros([h+2, w+2], np.uint8)
    #创建一个mask,8位的
    cv.floodFill(copyImg, mask, (30, 30), (0, 255, 255), (100, 100, 100), (50, 50, 50),cv.FLOODFILL_FIXED_RANGE)
    #填充区域的像素值范围是:30-100——————30+50
    #(30, 30)开始填充位置,填充的颜色(0, 255, 255)   填充方法的选择cv.FLOODFILL_FIXED_RANGE
    cv.imshow("fill_color_demo", copyImg)

在这里插入图片描述

二值填充:

def fill_binary():
    image = np.zeros([400, 400, 3], np.uint8)
    #创建一个图,每个通道都是类型为一个字节
    image[100:300, 100:300, : ] = 255
    #所有通道是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), (100, 2, 255), cv.FLOODFILL_MASK_ONLY)
    #中间位置开始填充,
    cv.imshow("filled binary", image)

在这里插入图片描述

发布了60 篇原创文章 · 获赞 8 · 访问量 3323

猜你喜欢

转载自blog.csdn.net/qq_43476433/article/details/103544233