我有一张图像,其边缘看起来像这样:
我正在使用这两种方法修复边缘:
def get_colors(pil_image, limit=4):
pil_image = np.array(pil_image)
image_colors = {}
for row in pil_image:
for pxl in row:
pxl = tuple(pxl)
if not image_colors.get(pxl):
image_colors[pxl] = 1
else:
image_colors[pxl] += 1
sorted_image_colors = sorted(image_colors, key=image_colors.get, reverse=True)
return sorted_image_colors[:limit]
def remove_anti_aliasing(colors, img_ndarr):
colors = np.array(colors).astype(np.int32)
img_ndarr = img_ndarr.astype(np.int32)
distances = np.argmin(np.array([np.sqrt(np.sum((color - img_ndarr) ** 2, axis=2)) for color in colors]), axis=0)
return colors[distances].astype(np.uint8)
结果如下:
边缘仍然看起来像第一个,但是现在颜色限制为4个。
我想要实现这样的功能,其中边缘只有两种颜色:
我该怎么做?