Python+OpenCV(五)——ROI和泛洪填充
学习视频:python+opencv3.3视频教学 基础入门 其他学习记录: Python+OpenCV(一)——基础操作 Python+OpenCV(二)——Numpy模块 Python+OpenCV(三)——色彩空间 Python+OpenCV(四)——像素运算 源码如下:
# -*- coding = utf-8 -*-
# @Time : 2021/7/31 19:34
# @Author : 西兰花
# @File : OpenCV02.py
# @Software : PyCharm
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(copyImg, mask, (30, 30), (0, 255, 255), (100, 100, 100), (50, 50, 50), cv.FLOODFILL_FIXED_RANGE)
cv.imshow("fill_color_demo", copyImg)
def fill_binary_demo():
image = np.zeros([400, 400, 3], np.uint8)
image[100:300, 100:300, :] = 255
cv.imshow("fill_binary_demo----before", image)
mask = np.ones([402, 402, 1], np.uint8)
mask[101:301, 101:301, :] = 0 # 此处mask[]必须为0,若·不为0,则FLOODFILL_MASK_ONLY函数将不进行任何填充
cv.floodFill(image, mask, (200, 200), (0, 0, 255), cv.FLOODFILL_MASK_ONLY)
cv.imshow("fill_binary_demo----after", image)
print("------ Hello OpenCV ------")
src = cv.imread("C:/Users/Administrator/Pictures/PS/11.png") # 读取色彩空间默认为blue,green,red3个通道
cv.imshow("image_11.png", src)
# test = src[10:130, 10:220] # 框选ROI区
# gray = cv.cvtColor(test, cv.COLOR_RGB2GRAY) # 对ROI区进行灰度处理
# backtest = cv.cvtColor(gray, cv.COLOR_GRAY2BGR)
# src[10:130, 10:220] = backtest #将处理过的ROI区放回原图中
# cv.imshow("test", src)
# fill_color_demo(src)
fill_binary_demo()
cv.waitKey(0)
cv.destroyAllWindows() # 销毁/关闭所有窗口
输出结果:
-
ROI区选择  -
泛洪填充 ①FLOODFILL_FIXED_RANGE  ②FLOODFILL_MASK_ONLY 
|