如何在红宝石中将单色图像转换为 2D 数组



数字 5 单色图像

如何将样本单色图像转换为红宝石中的 2D 数组。

[[0, 0, 0, 0, 0],
 [0, 1, 1, 1, 1],
 [0, 1, 1, 1, 1],
 [0, 0, 0, 0, 1],
 [0, 1, 1, 1, 0],
 [1, 1, 1, 1, 0],
 [0, 1, 1, 1, 0],
 [0, 1, 1, 1, 0],
 [1, 0, 0, 0, 1]]

我试过使用pycall插件。但是,在 rails 控制台中执行时,我必须再次手动导入。Pycall有时不起作用。

require 'pycall'
require 'pycall/import'
include PyCall::Import
pyimport 'numpy', as: :np
pyimport 'PIL.Image', as: :pil_image
image = pil_image.open.(image_path).convert.('1')
img = np.asarray.(image, dtype: np.uint8)
list = img.tolist.().map { |l| l.to_a }

RMagick提供了几种解决方案。使用 get_pixels 获取 Pixel 对象的数组。像素对象是可以从中获取红色、绿色和蓝色通道值的结构。由于图像是单色的,因此通道值将为 0 或量子范围。按"量子范围"缩放值,以强制它们为 0 或 1。

或者,使用 export_pixels。同样,按 QuantumRange 缩放返回的值以获得 0 或 1。

无论哪种情况,您都可以通过对图像的连续子集(例如单行(进行操作来最大程度地减少存储要求(如果图像很大(。

相关内容

  • 没有找到相关文章

最新更新