ROI(region of interest),感兴趣区域。机器视觉、图像处理中,从被处理的图像以方框、圆、椭圆、不规则多边形等方式勾勒出需要处理的区域,称为感兴趣区域。
本例程是通过对图片Numpy数据进行ROI的获取
泛洪填充:从一个点开始附近像素点,填充成新的颜色,直到封闭区域内的所有像素点都被填充新颜色为止。
此类操作相对比较简单,类似于抠图处理
src = cv.imread("C:\\0-MyWork\\opencv-python\\lena.png")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
face = src[180:390, 200:400] #以左上角为0点,第一列表示向下纵轴,第二列表示向右横轴
gray = cv.cvtColor(face, cv.COLOR_BGR2GRAY) #转化成为gray灰度图
cv.imshow("face", gray)
backface = cv.cvtColor(gray, cv.COLOR_GRAY2BGR)
src[180:390, 200:400] = backface
cv.imshow("fullface-after", src)
代码:
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) #API要求必须要+2,这样能处理所有像素边缘
cv.floodFill(copyImg, mask, (430, 430), (0, 255, 255), (100, 100, 100), (50, 50, 50), 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 #将中间矩形刷白
cv.imshow("fill_binary", image)
mask = np.ones([402, 402, 1], np.uint8)
mask[151:301, 151:301] = 0 #经过两步处理,得到一个Mask图片
cv.floodFill(image, mask, (200, 200), (100, 2, 255), cv.FLOODFILL_MASK_ONLY)
cv.imshow("filled binary", image)
print("--------- Hello Python ---------")
src = cv.imread("C:\\0-MyWork\\opencv-python\\lena.png")
fill_color_demo(src)
fill_binary()
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
cv.waitKey(0)
cv.destroyAllWindows()
以上代码重点分析以下函数:
cv.floodFill(image, mask, (430, 430), (0, 255, 255), (100, 100, 100), (50, 50, 50), cv.FLOODFILL_FIXED_RANGE)
cv.floodFill(image, mask, (200, 200), (100, 2, 255), cv.FLOODFILL_MASK_ONLY)
以上两个函数的前三个参数:
1-image:为需要进行洪泛处理的图片;
2-mask:表示为掩图,其作用见对上述矩形的处理;
3-(430, 430)或(200, 200):表示种子数据,即选中的像素点位置;
4-(0, 255, 255)或(100, 2, 255):表示填充的颜色;
5-(100, 100, 100)与 (50, 50, 50):表示低、高的三通道范围。例如第一个函数中, (430, 430)这个位置的像素点(x,y,z),即像素范围在(x-100,y-100,z-100)到(x+50,y+50,z+50)全部被填充。
6-cv.FLOODFILL_FIXED_RANGE:泛洪填充,改变图像;
cv.FLOODFILL_MASK_ONLY:不改变图像,只填充掩遮罩本身。
说明:本无法博文及后续本专栏文章代码与测试文件下载地址为:
链接:https://pan.baidu.com/s/1BeZkXoCAn_AFRkyXcI8dMQ
提取码:aze2
注:更多资源及软件请W信关注“学娱汇聚门”