ROI(region of interest),感兴趣区域。机器视觉、图像处理中,从被处理的图像以方框、圆、椭圆、不规则多边形等方式勾勒出需要处理的区域,称为感兴趣区域,ROI。在Halcon、OpenCV、Matlab等机器视觉软件上常用到各种算子(Operator)和函数来求得感兴趣区域ROI,并进行图像的下一步处理。
泛洪填充算法(Flood Fill Algorithm)
泛洪填充算法又称洪水填充算法是在很多图形绘制软件中常用的填充算法,最熟悉不过就是
windows paint的油漆桶功能。算法的原理很简单,就是从一个点开始附近像素点,填充成新
的颜色,直到封闭区域内的所有像素点都被填充新颜色为止。泛红填充实现最常见有四邻域
像素填充法,八邻域像素填充法,基于扫描线的像素填充方法。根据实现又可以分为递归与
非递归(基于栈)。
泛洪填充
如何填充一个对象内部区域
- FLOODFILL_FIXED_RANGE – 改变图像,泛洪填充
- FLOODFILL_MASK_ONLY – 不改变图像、只填充遮 罩层本身、忽略新的颜色值参数
floodFill(Mat image, Mat mask, Point seedPoint, Scalar newVal)
floodFill(image, mask, seedPoint, newVal, rect, loDiff, upDiff, flags) src(seed.x, seed.y)- loDiff <= src(x,y) <= src(seed.x, seed.y)+ upDiff
代码:
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
#cv.floodFill(图片,遮盖层,起始位置,填充颜色,低值,高值,填充方法)
cv.floodFill(copyImg, mask, (30,30), (0, 255, 255), (100, 100, 100), (50, 50, 50), cv.FLOODFILL_FIXED_RANGE)
cv.imshow("fill_color_demo", copyImg)
src = cv.imread("src/fish.jpg")
cv.namedWindow("import image", cv.WINDOW_AUTOSIZE)
cv.imshow("import image", src)
"""
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)
"""
fill_color_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()
效果