二值图像中 计算白色区域 若白色区域面积小于4个像素 则将该区域变为黑色 opencv python
时间: 2024-02-20 11:02:06 浏览: 67
用Pythonopencv提取图像中的红色区域
4星 · 用户满意度95%
可以使用OpenCV中的连通组件分析函数`cv2.connectedComponentsWithStats()`来实现。
首先将二值图像进行反转,使得白色区域变成黑色,黑色区域变成白色。然后使用`cv2.connectedComponentsWithStats()`函数得到所有连通组件的信息,其中第一个返回值为标记图像,每个连通组件的像素值都被标记为不同的整数值,第二个返回值为连通组件的数量,第三个返回值为每个连通组件的外接矩形、面积等信息。
遍历所有连通组件的面积信息,如果面积小于4个像素,则将对应的连通组件在标记图像中置为0,即黑色。
代码如下:
```python
import cv2
# 读取二值图像
img = cv2.imread('binary_image.png', 0)
# 反转二值图像,使得白色区域变成黑色,黑色区域变成白色
img = cv2.bitwise_not(img)
# 连通组件分析
ret, labels, stats, centroids = cv2.connectedComponentsWithStats(img, connectivity=8)
# 遍历所有连通组件的面积信息
for i in range(1, ret):
# 如果面积小于4个像素,则将对应的连通组件在标记图像中置为0,即黑色
if stats[i, cv2.CC_STAT_AREA] < 4:
labels[labels == i] = 0
# 将标记图像进行反转,得到最终结果
img = cv2.bitwise_not(labels)
# 显示结果
cv2.imshow('Result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
其中`binary_image.png`为输入的二值图像文件名。
阅读全文