grabcut算法的python实现
时间: 2023-08-01 11:15:24 浏览: 127
以下是grabcut算法的Python实现代码,可以使用OpenCV库来实现:
```
import cv2
import numpy as np
# 读取图像
img = cv2.imread('input.jpg')
# 创建与图像相同大小的掩码
mask = np.zeros(img.shape[:2], np.uint8)
# 创建以0填充的前景和背景模型
bgdModel = np.zeros((1,65), np.float64)
fgdModel = np.zeros((1,65), np.float64)
# 定义要分割的矩形
rect = (50,50,450,290)
# 执行grabcut算法
cv2.grabCut(img, mask, rect, bgdModel, fgdModel, 5, cv2.GC_INIT_WITH_RECT)
# 创建新的掩码,其中0和2都被视为背景,1和3都被视为前景
mask2 = np.where((mask==2)|(mask==0), 0, 1).astype('uint8')
# 应用掩码来获取前景区域
img = img*mask2[:,:,np.newaxis]
# 显示结果图像
cv2.imshow('Output', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个代码中,我们首先读取输入图像,然后创建与图像相同大小的掩码。然后我们定义一个矩形区域,该算法将在其中执行分割。我们还创建了前景和背景模型,并使用`cv2.grabCut`函数执行grabcut算法。最后,我们使用新的掩码提取前景区域,并将其显示在屏幕上。
阅读全文