python opencv去掉一张图中太白的部分
时间: 2023-10-18 16:10:10 浏览: 148
可以使用阈值分割来去掉图中太白的部分。以下是一些可能的方法:
1. 灰度化:将彩色图像转换为灰度图像。
```python
import cv2
img = cv2.imread('image.jpg')
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
```
2. 阈值分割:将图像中像素值大于某个阈值的像素设置为白色,否则设置为黑色。
```python
_, threshold_img = cv2.threshold(gray_img, 200, 255, cv2.THRESH_BINARY)
```
3. 去除白色部分:将二值化后的图像中白色部分去掉,只保留黑色部分。
```python
# 找到所有白色轮廓
contours, _ = cv2.findContours(threshold_img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 创建一个全黑的掩膜
mask = np.zeros_like(threshold_img)
# 将所有白色轮廓填充为白色
cv2.drawContours(mask, contours, -1, 255, cv2.FILLED)
# 将掩膜应用于原图像
result = cv2.bitwise_and(img, img, mask=mask)
```
完整代码如下:
```python
import cv2
import numpy as np
img = cv2.imread('image.jpg')
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
_, threshold_img = cv2.threshold(gray_img, 200, 255, cv2.THRESH_BINARY)
contours, _ = cv2.findContours(threshold_img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
mask = np.zeros_like(threshold_img)
cv2.drawContours(mask, contours, -1, 255, cv2.FILLED)
result = cv2.bitwise_and(img, img, mask=mask)
cv2.imshow('Original Image', img)
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文