参考教程:
ROI(region of interest),感兴趣区域。
机器视觉、图像处理中,从被处理的图像以方框、圆、椭圆、不规则多边形等方式勾勒出需要处理的区域,称为感兴趣区域。
import cv2 as cv
if __name__ == "__main__":
src = cv.imread('cat.jpg')
# 指定ROI
face = src[0:250, 150:400]
# 单独写出ROI区域
cv.imwrite("catface.png",face)
# 对ROI区域单独处理
grey = cv.cvtColor(face, cv.COLOR_BGR2GRAY)
backface = cv.cvtColor(grey, cv.COLOR_GRAY2BGR)
src[0:250, 150:400] = backface
cv.imwrite("backface.png",src)
泛洪填充:又称洪水填充,是在很多图形绘制软件中常用的填充算法,最熟悉就是windows paint的油漆桶功能。
实现的原理很简单,就是从一个点开始将附近像素点填充成新的颜色,直到封闭区域内的所有像素点都被填充新颜色为止。
def fill_color_demo(image):
"""
彩色泛洪填充
- - - -
image - 原图像
"""
copyimg = image.copy()
h, w = image.shape[:2]
# "+2"应该是工程化处理,不用深究
mask = np.zeros([h+2,w+2],np.uint8)
# floodFill()泛洪填充函数:
# (30, 30)为起始点, (0, 255, 255)为填充颜色, (50, 50, 50)为填充颜色下降范围, (50,50,50)为填充颜色上升范围
cv.floodFill(copyimg, mask, (30, 30), (0, 255, 255), (50, 50, 50), (50,50,50), cv.FLOODFILL_FIXED_RANGE)
cv.imwrite("fill.png", copyimg)
if __name__ == "__main__":
src = cv.imread('cat.jpg')
fill_color_demo(src)
def fill_binary():
"""
二值图像泛洪填充
"""
image = np.zeros([400, 400, 3], np.uint8)
image[100:300, 100:300, :] = 255
# 导出新创建图像
cv.imwrite("init.png", image)
# 创建mask:注意此处为ones
mask = np.ones([402,402],np.uint8)
mask[101:301, 101:301] = 0
# floodFill()泛洪填充函数:
# (200, 200)为起始点, (0, 255, 255)为填充颜色
cv.floodFill(image,mask, (200, 200), (0, 255, 255), cv.FLOODFILL_MASK_ONLY)
cv.imwrite("fill2.png", image)
if __name__ == "__main__":
src = cv.imread('cat.jpg')
fill_binary()