Python GUI 到 "label" 图像中的基本事实?

Python GUI to "label" ground truth in images?

我正在进行的一个项目涉及查找图像中对象的 x, y 坐标。对于给定的图像,我想通过 视觉检查 .

增加对特定 x, y 的注释

作为玩具示例,我有一张星星的图像。从这张图片中,我导出了一个 x, y 恒星质心坐标数组,使用 skimage.peak_local_max:

找到
centroids = [[3.567, 4.325], [7.814, 6.769], [2.122, 9.177], ...]

可以叠加在原始图像上。我想要的是一个允许注释数据的用户友好界面。比如说,最上面的星星是通过单击鼠标(“绿色框”)来选择的,这样我的元数据就会被扩充成如下所示:

    x    y    selected
0   3.567         4.325         False
1   7.814         6.769         True
2   2.122         9.177         False
...

...在继续下一张图片之前(有自己的一组质心被覆盖和选择)。

我的问题实际上不是关于在图像上“覆盖”注释,而是注释数据。这些脱离上下文的关键字的汇合使得搜索答案变得非常困难。通过目测检查我的数据要容易得多,而不是用数字检查每个坐标。有没有一种使用常见 Python 库的快速而肮脏的方法?

我在 Python.

中看到使用 Matplotlibeasygui 完成类似的事情

您可以使用 easygui 创建点击触发器:

    def double_click_trigger(page_num, event):
        if event.dblclick:
            x = int(event.xdata)
            y = int(event.ydata)
            print(f"Clicked at {x}, {y}")

然后创建一个 matplotlib 图并将触发器连接到它:

        im = some_image ...
        fig, ax = plt.subplots()
        ax.imshow(im.resize(size))

        def this_page_trigger(event):
            return double_click_trigger(i, event)

        ax.set_title(f'Page {i + 1} (double click coordinates)')
        fig.canvas.mpl_connect('button_press_event', this_page_trigger)
        plt.show()

然后您可以将 x/y 写成 JSON 或其他任何文件。