GrabCut
该算法,在opencv中很容易就可以使用。
通过对于一开始取定的矩阵来做来模拟。
(这个我们可以通过调整这个点的以及对应的矩阵大小来调整效果)
下面就是算法提取出来的图像,以及原图

下面这就是原图(就是代码的输入图片)
代码
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('3.jpg')
OLD_IMG = img.copy()
mask = np.zeros(img.shape[], np.uint8)
SIZE = ,)
bgdModle = np.zeros(SIZE, np.float64)
fgdModle = np.zeros(SIZE, np.float64)
rect = ,,,)
cv2.grabCut(img, mask, rect, bgdModle, fgdModle,, cv2.GC_INIT_WITH_RECT)
mask2 = np.where((mask ==) | (mask ==),,).astype('uint8')
img *= mask2[:, :, np.newaxis]
plt.subplot), plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.title("grabcut"), plt.xticks([]), plt.yticks([])
plt.subplot), plt.imshow(cv2.cvtColor(OLD_IMG, cv2.COLOR_BGR2RGB))
plt.title("original"), plt.xticks([]), plt.yticks([])
plt.savefig('GrabCut.png')
plt.show()