用python将图片变成白底图实现抠图
时间: 2024-02-13 13:00:42 浏览: 181
将图片变成白底图实现抠图的一种常用方法是使用 OpenCV 库和 NumPy 库。下面是实现的具体步骤:
1. 导入库
```python
import cv2
import numpy as np
```
2. 读取图片
```python
img = cv2.imread("image.jpg") # 读取图片
```
3. 将图片转换为灰度图
```python
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 将图片转换为灰度图
```
4. 将图片二值化
```python
_, binary = cv2.threshold(gray, 200, 255, cv2.THRESH_BINARY) # 将灰度图二值化
```
5. 反转颜色
```python
binary = cv2.bitwise_not(binary) # 反转颜色,使白底变成黑底
```
6. 将黑底图片转换为白底图片
```python
white = np.zeros_like(img) # 创建一个与原图像大小相同,但所有像素值为0的数组
white.fill(255) # 将所有像素值设置为255,即变成白底
white[binary == 0] = img[binary == 0] # 将原图像中像素值为0的部分(即黑色部分)复制到白底图片中
```
7. 保存白底图片
```python
cv2.imwrite("white_bg_image.jpg", white) # 保存白底图片
```
完整代码如下:
```python
import cv2
import numpy as np
img = cv2.imread("image.jpg") # 读取图片
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 将图片转换为灰度图
_, binary = cv2.threshold(gray, 200, 255, cv2.THRESH_BINARY) # 将灰度图二值化
binary = cv2.bitwise_not(binary) # 反转颜色,使白底变成黑底
white = np.zeros_like(img) # 创建一个与原图像大小相同,但所有像素值为0的数组
white.fill(255) # 将所有像素值设置为255,即变成白底
white[binary == 0] = img[binary == 0] # 将原图像中像素值为0的部分(即黑色部分)复制到白底图片中
cv2.imwrite("white_bg_image.jpg", white) # 保存白底图片
```
运行以上代码后,将生成一张白底图片,可以用于后续的抠图操作。
阅读全文