# -*- coding: utf-8 -*- import cv2 import scipy import scipy.ndimage from PIL import Image img = scipy.array(Image.open('image.png')) mask = scipy.array(Image.open('mask.png')) assert img.shape == mask.shape imgmask = scipy.zeros((mask.shape[0],mask.shape[1]),scipy.uint8) imgmask[mask[...,0] == 0] = cv2.GC_BGD imgmask[mask[...,0] == 64] = cv2.GC_PR_BGD imgmask[mask[...,0] == 128] = cv2.GC_PR_FGD imgmask[mask[...,0] == 255] = cv2.GC_FGD print mask.shape print imgmask.shape bgdModel = scipy.zeros((1,5*13),scipy.float64) fgdModel = scipy.zeros((1,5*13),scipy.float64) cv2.grabCut( img, imgmask, None, bgdModel, fgdModel, 1, cv2.GC_INIT_WITH_MASK, ) mask = (imgmask == cv2.GC_FGD) | (imgmask == cv2.GC_PR_FGD) masked = scipy.zeros_like(img) masked[mask] = img[mask] cv2.imshow('test',masked) cv2.waitKey(0)