如何在jupyter笔记本中使用python向图像添加可视注释?

如何在jupyter笔记本中使用python向图像添加可视注释?,python,matplotlib,jupyter,Python,Matplotlib,Jupyter,总体目标是查看来自某个服务器的医学图像,向图像添加可视注释(即,突出显示/环绕红色肿瘤),然后将这些图像连同注释作为某种元数据上传回服务器 查看/上传/存储元数据基本上是完整的,但我还没有找到任何软件包允许我在jupyter笔记本中绘制图像。这既可以操纵像素,也可以在显示的图像上创建新图像 我目前正在使用matplotlib显示图像数据 我见过一些使用javascript来跟踪鼠标移动和击键的情况,但我不知道如何利用它。我可以使用任何软件包,只要它在jupyter中工作 在Jupyter笔记本中

总体目标是查看来自某个服务器的医学图像,向图像添加可视注释(即,突出显示/环绕红色肿瘤),然后将这些图像连同注释作为某种元数据上传回服务器

查看/上传/存储元数据基本上是完整的,但我还没有找到任何软件包允许我在jupyter笔记本中绘制图像。这既可以操纵像素,也可以在显示的图像上创建新图像

我目前正在使用matplotlib显示图像数据


我见过一些使用javascript来跟踪鼠标移动和击键的情况,但我不知道如何利用它。我可以使用任何软件包,只要它在jupyter中工作

在Jupyter笔记本中,您可以使用:

%matplotlib inline

多亏了@michael_j_ward的建议,我找到了一个解决方案。我浏览了这些讨论和教程,并阅读了matplotlib轴的文档。这是我想出的/改变的

import matplotlib.pyplot as plt
from matplotlib.lines import Line2D
import numpy as np
import dicom


class Annotator(object):
    def __init__(self, axes):
        self.axes = axes

        self.xdata = []
        self.ydata = []

    def mouse_move(self, event):
        if not event.inaxes:
            return

        x, y = event.xdata, event.ydata

        self.xdata.append(x)
        self.ydata.append(y)
        line = Line2D(self.xdata,self.ydata)
        line.set_color('r')
        self.axes.add_line(line)

        plt.draw()

    def mouse_release(self, event):
        # Erase x and y data for new line
        self.xdata = []
        self.ydata = []

path = '../sample.dcm'

data = dicom.read_file(path)

img = data.pixel_array

fig, axes = plt.subplots()
axes.imshow(img[0])
plt.axis("off")
plt.gray()
annotator = Annotator(axes)
plt.connect('motion_notify_event', cursor.mouse_move)
plt.connect('button_release_event', cursor.mouse_release)

axes.plot()

plt.show()


它允许我打开图像并在其上绘制以突出显示或注释图像的重要部分

我不认为Jupyter是这份工作的合适工具,似乎你想开发一个web应用程序。@Edu虽然我同意你的观点,但不幸的是这是我目前的工作限制:/,你是说你想先显示原始图像,然后通过跟踪鼠标移动和点击,在图像上画圆圈和箭头,然后在Jupyter笔记本上完成这一切吗?@michael_j_ward,对。显然,显示图像非常简单。可以在上下文中跟踪鼠标移动和单击。如果可能的话,只是不知道如何将其应用到绘图中。@sutartmelson,明白了。也许这是有用的:还有这个讨论:我自己从来没有做过这样的事情。如果您找到了解决方案,请与他人分享。光标在哪里?我收到名称错误:未定义名称“cursor”