这是一个简单的问题,但我找不到相关的工具...
是否有一个简单易用的工具,可以在 jupyter-notebook
中让用户在白色空间上绘制黑色东西(假设大小为 (x,y) 像素),并在运行单元格后返回(或者暂时保存)作为一个数组/图像,然后可以由 numpy
等使用。
这是一个简单的问题,但我找不到相关的工具...
是否有一个简单易用的工具,可以在 jupyter-notebook
中让用户在白色空间上绘制黑色东西(假设大小为 (x,y) 像素),并在运行单元格后返回(或者暂时保存)作为一个数组/图像,然后可以由 numpy
等使用。
您可以使用 PIL
和 tkinter
库来完成,例如:
from PIL import ImageTk, Image, ImageDraw
import PIL
from tkinter import *
width = 200 # canvas width
height = 200 # canvas height
center = height//2
white = (255, 255, 255) # canvas back
def save():
# save image to hard drive
filename = "user_input.jpg"
output_image.save(filename)
def paint(event):
x1, y1 = (event.x - 1), (event.y - 1)
x2, y2 = (event.x + 1), (event.y + 1)
canvas.create_oval(x1, y1, x2, y2, fill="black",width=5)
draw.line([x1, y1, x2, y2],fill="black",width=5)
master = Tk()
# create a tkinter canvas to draw on
canvas = Canvas(master, width=width, height=height, bg='white')
canvas.pack()
# create an empty PIL image and draw object to draw on
output_image = PIL.Image.new("RGB", (width, height), white)
draw = ImageDraw.Draw(output_image)
canvas.pack(expand=YES, fill=BOTH)
canvas.bind("<B1-Motion>", paint)
# add a button to save the image
button=Button(text="save",command=save)
button.pack()
master.mainloop()
save
函数,使用PIL
和numpy
来读取图像并将其作为numpy
数组。希望这能帮到您!PIL.image.new()
文档URL以获取所有可用模式)。 - swiss_knight关于这个问题,jupyterlab的github页面上有讨论:https://github.com/jupyterlab/jupyterlab/issues/9194。显然,计划在某个时候添加Excalidraw,而在此之前,建议使用https://github.com/nicknytko/notebook-drawing。
holoviews
库来实现这个功能。 - edinho