二值图像中 计算白色区域 若白色区域面积小于4个像素 则将该区域变为黑色 opencv python
时间: 2024-02-20 18:02:35 浏览: 116
要将二值图像中小于4个像素的白色区域变为黑色,可以使用cv2.connectedComponentsWithStats()函数来获取每个连通区域的面积,并通过遍历连通区域的方式找到小于4个像素的白色区域。具体实现如下:
``` python
import cv2
import numpy as np
# 读取二值图像
img = cv2.imread('binary_image.png', cv2.IMREAD_GRAYSCALE)
# 获取连通区域信息
ret, labels, stats, centroids = cv2.connectedComponentsWithStats(img, connectivity=8)
# 遍历连通区域
for i in range(1, ret):
# 获取当前连通区域的面积
area = stats[i, cv2.CC_STAT_AREA]
# 如果面积小于4个像素,则将该区域变为黑色
if area < 4:
labels[labels == i] = 0
# 将处理后的连通区域标签图转换为二值图像
img[labels == 0] = 0
img[labels > 0] = 255
# 显示结果
cv2.imshow('result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上述代码中,首先使用cv2.connectedComponentsWithStats()函数获取连通区域信息。然后通过遍历连通区域,获取每个连通区域的面积,如果面积小于4个像素,则将该区域在标签图中对应的像素值赋为0,也就是将该区域变为黑色。最后将处理后的标签图转换为二值图像,并显示结果。
阅读全文