python opencv 根据mask 抠图 bgra
时间: 2023-08-29 11:10:56 浏览: 179
使用OpenCV可以根据mask抠出bgra图像中的感兴趣区域。下面是一个简单的示例代码:
```python
import cv2
import numpy as np
# 读取bgra图像和mask
img = cv2.imread('input.png', cv2.IMREAD_UNCHANGED)
mask = cv2.imread('mask.png', cv2.IMREAD_GRAYSCALE)
# 将mask转为三通道
mask = cv2.cvtColor(mask, cv2.COLOR_GRAY2BGR)
# 将mask中不为0的部分取反
mask_inverse = cv2.bitwise_not(mask)
# 将原图和mask分别与mask_inverse做与运算和或运算
foreground = cv2.bitwise_and(img, mask)
background = cv2.bitwise_and(img, mask_inverse)
# 将前景和背景叠加
result = cv2.add(foreground, background)
# 显示结果
cv2.imshow('result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个示例中,我们首先读取了bgra图像和mask,然后将mask转为三通道,因为原始的mask是单通道的。接下来,我们将mask中不为0的部分取反,得到mask的补集。然后,我们将原图和mask分别与mask_inverse做与运算和或运算,得到前景和背景。最后,将前景和背景叠加,得到结果。
阅读全文