如何获取 Canvas 数据的 Numpy 数组?
How to get Numpy array of Canvas data?
我正在使用 Tkinter 构建一个应用程序,其中可以绘制例如Canvas 行。这很好用。但是,我找不到获取当前 Canvas 数据的方法。我最好从当前 Canvas 数据中获取一个 numpy 数组,因为我的 post 处理步骤主要使用 numpy。
有什么方法可以从 Canvas 数据中构建 numpy 数组吗?在某些颜色格式(如 RGB)中,优先选择?
我知道我可以获得信息,例如Canvas 之外的行(如坐标),但我不需要此信息。我需要整个 Canvas 场景的 光栅化图像数据 。像 numpy 数组或(光栅化)图像(jpg、png、tiff、位图...)。
就像@Bryan Oakley 所说:没有 方法来获得 Tkinter Canvas 绘图的光栅化版本。
不过,我想出了这个解决方法:
import skimage.io as ski_io
(...)
# draw your canvas
(...)
# save canvas to .eps (postscript) file
canvas.postscript(file="tmp_canvas.eps",
colormode="color",
width=CANVAS_WIDTH,
height=CANVAS_HEIGHT,
pagewidth=CANVAS_WIDTH-1,
pageheight=CANVAS_HEIGHT-1)
# read the postscript data
data = ski_io.imread("tmp_canvas.eps")
# write a rasterized png file
ski_io.imsave("canvas_image.png", data)
我不太喜欢解决方法,但 skimage
似乎是读取 postscript 文件和写入 png 的最快解决方案。
Scikit-image is developed as a toolkit for SciPy,因此它在内部使用 scipy.ndimage
,这正是我想要的,可以用来非常轻松地创建 np.ndarray
。
此外,scikit-learn 本身就是一个功能强大且快速的图像处理软件,可以操作、读取和保存各种图像格式。
现在您有了完整的选择:从 Canvas 数据中获取 NumPy np.ndarray
用于进一步计算,使用 SciPy/scikit-image 或操作 scipy.ndimage
或保存数据,例如作为光栅化的 png,到磁盘。
我正在使用 Tkinter 构建一个应用程序,其中可以绘制例如Canvas 行。这很好用。但是,我找不到获取当前 Canvas 数据的方法。我最好从当前 Canvas 数据中获取一个 numpy 数组,因为我的 post 处理步骤主要使用 numpy。
有什么方法可以从 Canvas 数据中构建 numpy 数组吗?在某些颜色格式(如 RGB)中,优先选择?
我知道我可以获得信息,例如Canvas 之外的行(如坐标),但我不需要此信息。我需要整个 Canvas 场景的 光栅化图像数据 。像 numpy 数组或(光栅化)图像(jpg、png、tiff、位图...)。
就像@Bryan Oakley 所说:没有 方法来获得 Tkinter Canvas 绘图的光栅化版本。
不过,我想出了这个解决方法:
import skimage.io as ski_io
(...)
# draw your canvas
(...)
# save canvas to .eps (postscript) file
canvas.postscript(file="tmp_canvas.eps",
colormode="color",
width=CANVAS_WIDTH,
height=CANVAS_HEIGHT,
pagewidth=CANVAS_WIDTH-1,
pageheight=CANVAS_HEIGHT-1)
# read the postscript data
data = ski_io.imread("tmp_canvas.eps")
# write a rasterized png file
ski_io.imsave("canvas_image.png", data)
我不太喜欢解决方法,但 skimage
似乎是读取 postscript 文件和写入 png 的最快解决方案。
Scikit-image is developed as a toolkit for SciPy,因此它在内部使用 scipy.ndimage
,这正是我想要的,可以用来非常轻松地创建 np.ndarray
。
此外,scikit-learn 本身就是一个功能强大且快速的图像处理软件,可以操作、读取和保存各种图像格式。
现在您有了完整的选择:从 Canvas 数据中获取 NumPy np.ndarray
用于进一步计算,使用 SciPy/scikit-image 或操作 scipy.ndimage
或保存数据,例如作为光栅化的 png,到磁盘。