この 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
初期マスク:
画像:
ありがとうございました!

