Esempio n. 1
0
def embed_image_plot(loc_list, image_list, label_file=None,
                     size=(64, 64), figsize=(20, 20),
                     with_border=False):
    fig, ax = plt.subplots(figsize=figsize)
    xmin, xmax = min(loc_list[:, 0]), max(loc_list[:, 0])
    ymin, ymax = min(loc_list[:, 1]), max(loc_list[:, 1])

    if with_border:
        with open(label_file, 'r') as f:
            labels = f.readlines()
        labels = [int(l.strip().split()[-1]) for l in labels]
        # green for True, red for False
        colors = ['red', 'green', 'blue', 'yellow', 'purple']
        # border size
        border = 10

        for i in range(len(image_list)):
            img_name = image_list[i]
            im = Image.open(img_name)
            # add border
            im = add_border(im, border, colors[labels[i]])
            im = im.resize(size)
            im = OffsetImage(im)
            im.image.axes = ax
            xy = list(loc_list[i, :])
            ab = AnnotationBbox(im, xy, xycoords='data',
                                boxcoords="offset points", pad=0.)
            ax.add_artist(ab)
    else:
        for i in range(len(image_list)):
            img_name = image_list[i]
            im = Image.open(img_name)
            im = im.resize(size)
            im = OffsetImage(im)
            im.image.axes = ax
            xy = list(loc_list[i, :])
            ab = AnnotationBbox(im, xy, xycoords='data',
                                boxcoords="offset points", pad=0.)
            ax.add_artist(ab)
    ax.set_xlim(2 * xmin, 2 * xmax)
    ax.set_ylim(2 * ymin, 2 * ymax)

    plt.tight_layout()
    plt.show()
    plt.axis("off")