版权声明:如需转载请标注 https://blog.csdn.net/weixin_40973138/article/details/84525002
ROI
ROI 即感兴趣区域(region of interest)
仅对图片中ROI 进行操作
def ROI(m1):
src = cv.cvtColor(m1[50:100, 150:250], cv.COLOR_BGR2GRAY) #此时src 虽为灰度图,但其为单通道
gray = cv.cvtColor(m1[50:100, 150:250], cv.COLOR_GRAY2BGR) #将其转变成三通道
m1[50:100, 150:250] = gray
cv.imshow(m1)
泛洪填充
泛洪填充就是选取一点,然后基于该点根据设定的上下限向四周扩散扫描,当扫描到的点位于该范围内,即将该点填充为设定的目标颜色,否则不变。
def fill_image(image):
copyImage = image.copy()
h, w = copyImage.shape[:2]
mask = np.zeros[h+2, w+2, np.unit8]
cv.floodFill(copyImage, mask, (250,250), (10,10,10), (20,20,20), (20,20,20), cv.FLOODFILL_FIXED_RANGE)
cv.imshow('result', copyImage)
然后运行:
src = cv.imread('/home/pi/Desktop/apple.jpg')
fill_image(src)
输出结果:
掩模之所以要设置为(h+2, w+2) 的尺寸是因为要确保覆盖整个图像
floodFill(image, mask, seedPoint, newVal, loDiff, upDiff, flags)
参数 | 说明 |
---|---|
image | 要进行处理的图像 |
mask | 掩模 |
seedPoint | 起始扫描点 |
newVal | 要填充进去的颜色 |
loDiff | 扫描时减去的低值 |
upDiff | 扫描时增加的高值 |
flags | 填充方式 |
二值填充
通过限定mask中像素值为0的区域来规定填充区域
mask的指定的位置为零时才填充,不为零不填充
def fill_image_2(image):
copyImage = image.copy()
h, w = copyImage.shape[:2]
mask = np.ones([h+2, w+2, 1], np.uint8)
mask[50:400, 50:400] = 0
cv.floodFill(copyImage, mask, (100,100), (0,0,255), cv.FLOODFILL_MASK_ONLY)
cv.imshow('result2', copyImage)
结果: