我遵循这个 opencv 教程并使用我自己的图像和掩码来改进使用 opencv 抓取算法的分割,但结果掩码与初始掩码相同。
代码:
import cv2
init_mask = cv2.imread('/path/to/mask.png',0)
img = cv2.imread('/path/to/image.png')
mask = np.zeros(image.shape[:2],np.uint8)
mask[init_mask == 255] = 1
bgdModel = np.zeros((1,65),np.float64)
fgdModel = np.zeros((1,65),np.float64)
mask, bgdModel, fgdModel =
cv2.grabCut(img,mask,None,bgdModel,fgdModel,5,cv2.GC_INIT_WITH_MASK)
mask = np.where((mask==2)|(mask==0),0,1).astype('uint8')
mask[mask == 1] = 255
np.all(mask==init_mask) # True
初始掩码:
图片:
谢谢!