原理
开始时用户需要用一个矩形将前景区域框住(前景区域应该完全被包括在矩形框内部)。然后算法进行迭代式分割直达达到最好结果。
函数
mask, bgdModel, fgdModel = cv2.grabCut(img, mask, rect, bgdModel, fgdModel, iterCount, mode=None)
参数 | |
---|---|
img | 输入图像 |
mask | 掩模图像,用来确定那些区域是背景,前景,可能是前景/背景等 可以设置为: cv2.GC_BGD,cv2.GC_FGD,cv2.GC_PR_BGD,cv2.GC_PR_FGD,或者直接输入 0,1,2,3 也行。 |
rect | 包含前景的矩形,格式为 (x,y,w,h) |
bdgModel, fgdModel | 算法内部使用的数组. 你只需要创建两个大小为 (1,65),数据类型为 np.float64 的数组。 |
iterCount | 算法的迭代次数 |
mode | 可以设置为 cv2.GC_INIT_WITH_RECT 或 cv2.GC_INIT_WITH_MASK,也可以联合使用。这是用来确定我们进行修改的方式,矩形模式或者掩模模式。 |
程序
import numpy as np
import cv2
#定义全局变量
n = 0 #定义鼠标按下的次数
ix &