去噪很有效的代码

去噪很有效的代码

主要思想:通过筛选面积小的联通区域,来实现去噪。
主要使用函数:cv2.connectedComponentsWithStats(img, connectivity),详解见:计算不规则连同区域

1. 原图与效果图

去噪很有效的代码_第1张图片 去噪很有效的代码_第2张图片

2. 实现代码

import cv2
import numpy as np

img = cv2.imread("a.jpg", 0)
img2 = img.copy()
# cv2.erode(img, (3, 3))

# 开操作,稍微去噪
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
img = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
# img = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

num, labels, stats, centroids = cv2.connectedComponentsWithStats(img, connectivity=8)

img1 = np.zeros_like(img)
for i in range(num):
          if i==0:
                    continue
          if stats[i][-1] > 50:
                    img1[labels == i] = 255

# 恢复原图的纹理,但是噪声已去除
img1 = np.where(img1>0, img2, 0)
img1 = np.array(img1, dtype=np.uint8)
img1 = cv2.cvtColor(img1, cv2.COLOR_GRAY2RGB)
cv2.imwrite('a.jpg', img1)

你可能感兴趣的:(CV,opencv,python,计算机视觉)