获取像素最近的邻居颜色

时间:2019-12-01 11:21:29

标签: python numpy

我有一张图像,其边缘看起来像这样:

enter image description here

我正在使用这两种方法修复边缘:

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)

结果如下:

enter image description here

边缘仍然看起来像第一个,但是现在颜色限制为4个。

我想要实现这样的功能,其中边缘只有两种颜色:

enter image description here

我该怎么做?

0 个答案:

没有答案