基于的人像自动分割方法的代码示例
时间: 2023-12-04 18:04:19 浏览: 82
以下是基于 GrabCut 算法的人像自动分割的 Python 代码示例:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('input_image.jpg')
# 创建掩码和背景模型和前景模型
mask = np.zeros(img.shape[:2], np.uint8)
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)
# 根据掩码提取前景
mask2 = np.where((mask==2)|(mask==0), 0, 1).astype('uint8')
img = img*mask2[:,:,np.newaxis]
# 保存输出图像
cv2.imwrite('output_image.png', img)
```
其中,`cv2.imread()` 用于读取输入图像,`cv2.grabCut()` 用于执行 GrabCut 算法,`np.where()` 用于根据掩码提取前景,`cv2.imwrite()` 用于保存输出图像。你可以根据自己的需要修改代码中的参数值(例如矩形区域的位置和大小),以获得更好的分割效果。
阅读全文