1

この 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

初期マスク:

ここに画像の説明を入力

画像:

ここに画像の説明を入力

ありがとうございました!

4

1 に答える 1