python+opencv图片去除背景保留人物
时间: 2023-09-30 08:00:36 浏览: 176
Python的OpenCV库是一个非常强大的图像处理工具,可以使用它对图片进行各种操作,包括去除背景保留人物。
要去除背景保留人物,可以采用以下步骤:
1. 读取图片:使用OpenCV的“imread”函数读取待处理的图片。
2. 去除背景:可以使用OpenCV的“grabCut”函数进行背景去除。首先,需要创建一个与原始图像相同大小的掩码。将掩码中不需要分割的区域设置为0,将人物所在的区域设置为3。然后,通过调用“grabCut”函数,传入原始图像和初始化的掩码,进行背景去除。该函数会根据掩码中的初始化值,对图像进行迭代分割,最终得到分割好的图像。
3. 保存分割结果:将分割好的图像保存到本地,可以使用OpenCV的“imwrite”函数。
下面是一个简单的示例代码:
```python
import cv2
# 读取图片
image = cv2.imread('input.jpg')
# 创建与原始图像大小相同的掩码
mask = np.zeros(image.shape[:2], np.uint8)
# 设置掩码中不需要分割的区域为0,设置人物所在的区域为3
mask[100:500, 100:700] = 3
# 进行背景去除
bgdModel = np.zeros(shape=(1, 65), dtype=np.float64)
fgdModel = np.zeros(shape=(1, 65), dtype=np.float64)
cv2.grabCut(image, mask, None, bgdModel, fgdModel, 5, cv2.GC_INIT_WITH_MASK)
# 将掩码中被标记为前景的区域设置为255
mask = np.where((mask == 3) | (mask == 1), 255, 0).astype('uint8')
# 对原始图像进行掩码操作,保留前景
result = cv2.bitwise_and(image, image, mask=mask)
# 保存分割结果
cv2.imwrite('output.jpg', result)
```
以上代码仅仅是一个简单的示例,实际操作时可能需要根据具体情况进行参数调整和优化。希望对你有帮助!
阅读全文