我有一张黑白图片。我试图通过remove_small_objects
函数来去除噪点。
import cv2 as cv
import numpy as np
from skimage import morphology
img = np.array([[255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 0, 255, 0, 0, 0, 0, 255, 255, 255],
[255, 255, 255, 255, 0, 0, 0, 0, 255, 0, 0],
[255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[255, 255, 0, 0, 0, 0, 0, 255, 0, 0, 0],
[255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0],
[255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0]])
cleaned = morphology.remove_small_objects(img, min_size=10, connectivity=1)
print(cleaned)
while True:
cv.imshow('Demo', cleaned.astype(np.uint8))
if cv.waitKey(1) & 0xFF == 27:
break
cv.destroyAllWindows()
然而,它并没有像我预期的那样工作。中间的白色像素255仍然存在。
我做错了什么吗?谢谢
ndarray
是整数数组时,它不起作用...文档说它可以是“任意形状、整数或布尔类型。包含所需对象的数组。如果数组类型是整数,则整数必须是非负数。” - Hongbo Miaoskimage.measure.label
(或scipy.ndimage.label
),然后将其用作输入。 - Juan