写一个python3 图片人物抠图代码
时间: 2024-03-23 15:42:14 浏览: 15
以下是使用 Python 3 和 OpenCV 库进行图片人物抠图的示例代码:
```python
import cv2
import numpy as np
# 加载图像
img = cv2.imread('input_image.jpg')
# 创建一个 mask,用于在原图上绘制标记点
mask = np.zeros(img.shape[:2], np.uint8)
# 定义标记点
rect = (50, 50, 450, 290)
fgdModel = np.zeros((1, 65), np.float64)
bgdModel = np.zeros((1, 65), np.float64)
# 使用 grabCut 函数进行图像分割
cv2.grabCut(img, mask, rect, bgdModel, fgdModel, 5, cv2.GC_INIT_WITH_RECT)
# 生成抠图结果
mask = np.where((mask == cv2.GC_FGD) | (mask == cv2.GC_PR_FGD), 255, 0).astype('uint8')
result = cv2.bitwise_and(img, img, mask=mask)
# 显示结果
cv2.imshow('result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这个代码会读取名为 `input_image.jpg` 的输入图像,使用 `grabCut` 函数进行图像分割,最后生成抠图结果并显示。在代码中,我们使用了 `grabCut` 函数来进行图像分割,需要提供一个矩形框来指定要分割的区域。你可以根据需要调整矩形框的位置和大小。最后,我们使用 `bitwise_and` 函数将原图和 mask 结合起来生成抠图结果。