OpenCV grabCut仅输出掩码的值作为背景

时间:2016-03-25 00:13:18

标签: python opencv numpy image-segmentation

BLUE 颜色表示前景的用户掩码, GREEN 颜色表示用户的背景遮罩,我得到以下结果。实际上只有面具的背景标记输出为背景:

Screenshot http://s7.postimg.org/xwa8z5nez/maradona_problem.png]

蓝色标记在掩码中保存为0,而绿色标记保存为1。

这是我的代码。你能帮忙吗?

def run_grabcut():
    global output
    global mask
    bgdmodel = np.zeros((1, 65),np.float64)
    fgdmodel = np.zeros((1, 65),np.float64)
    cv2.grabCut(img, mask, None, bgdmodel, fgdmodel, 1, cv2.GC_INIT_WITH_MASK)
    mask2 = np.where((mask == 0), 255, 0).astype('uint8')
    cv2.bitwise_and(img ,img , output, mask = mask2)

1 个答案:

答案 0 :(得分:0)

在第

mask2 = np.where((mask == 0), 255, 0).astype('uint8')

您将所有背景像素(mask == 0)映射到值255,将所有其他类型(例如foreground; mask == 1)映射到值0

添加

 mask3 = np.where((mask == 1), 127, 0).astype('uint8')

会为前景创建一个单独的掩码。这是你在找什么?

或者您是否还希望包含潜在背景(mask == 2)

 mask2 = np.where((mask==0) + (mask==2),255,0).astype('uint8')