Python 实现 人物抠图
时间: 2023-11-05 22:50:54 浏览: 130
人物抠图是一种常见的图像处理任务,可以使用Python中的OpenCV库来实现。下面是一个简单的示例代码:
```python
import cv2
# 加载图像
image = cv2.imread('input.jpg')
# 创建一个与输入图像相同大小的掩码(mask),将其初始化为全黑
mask = np.zeros(image.shape[:2], dtype=np.uint8)
# 定义前景和背景模型
bgdModel = np.zeros((1, 65), dtype=np.float64)
fgdModel = np.zeros((1, 65), dtype=np.float64)
# 定义矩形区域,包含要抠图的人物
rect = (x, y, w, h) # 根据实际情况修改坐标和宽高
# 使用GrabCut算法进行图像分割
cv2.grabCut(image, mask, rect, bgdModel, fgdModel, 5, cv2.GC_INIT_WITH_RECT)
# 创建一个掩码,将前景标记为可能的前景(可能是人物)
mask2 = np.where((mask == 2) | (mask == 0), 0, 1).astype('uint8')
# 将图像与掩码相乘,提取前景
result = image * mask2[:, :, np.newaxis]
# 显示结果
cv2.imshow('result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
请注意,这只是一个简单的示例代码,实际应用中可能需要根据具体情况进行调整和优化。
阅读全文