grabcut代码
时间: 2023-07-02 16:12:55 浏览: 151
GrabCut代码
以下是使用OpenCV中的grabCut实现图像分割的示例代码:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('input.jpg')
# 创建掩模和背景模型
mask = np.zeros(img.shape[:2], np.uint8)
bgModel = np.zeros((1, 65), np.float64)
fgModel = np.zeros((1, 65), np.float64)
# 定义矩形区域
rect = (50, 50, 450, 290)
# 执行grabCut算法
cv2.grabCut(img, mask, rect, bgModel, fgModel, 5, cv2.GC_INIT_WITH_RECT)
# 对掩模进行处理,将可能为前景的像素标记为1,其余像素标记为0
mask2 = np.where((mask == 2) | (mask == 0), 0, 1).astype('uint8')
# 将原图像和掩模进行位运算,提取前景
img = img * mask2[:, :, np.newaxis]
# 显示结果
cv2.imshow('Result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上述代码中,我们首先创建一个掩模和背景模型,然后定义一个矩形区域,该区域将被视为前景。然后,我们调用`cv2.grabCut()`函数执行grabCut算法,该算法将图像分为前景和背景。最后,我们将可能是前景的像素标记为1,并将其余像素标记为0,然后将其与原始图像进行位运算,提取前景。
阅读全文