import numpy as np
import cv2
from matplotlib import pyplot as plt
img = cv2.imread(r'F:\OPENCV\Opencv\animal.png')
# 创建掩膜
mask = np.zeros(img.shape[:2], np.uint8)
bgdModel = np.zeros((1, 65), np.float64)
fgdModel = np.zeros((1, 65), np.float64)
rect = (40, 40, 1000, 1000)
# 函数的返回值是更新的mask, bgdModel, fgdModel
cv2.grabCut(img, mask, rect, bgdModel, fgdModel, 5, cv2.GC_INIT_WITH_RECT)
mask2 = np.where((mask == 2) | (mask == 0), 0, 1).astype('uint8')
img = img * mask2[:, :, np.newaxis]
cv2.imwrite(r'F:\OPENCV\Opencv\animal-fg.png', img)
plt.imshow(img[:, :, ::-1])
plt.colorbar()
plt.show()
结果显示