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