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.
中看到使用 Matplotlib
和 easygui
完成类似的事情
您可以使用 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 或其他任何文件。
我正在进行的一个项目涉及查找图像中对象的 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.
中看到使用Matplotlib
和 easygui
完成类似的事情
您可以使用 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 或其他任何文件。