2017-06-16 55 views
1

digit 5 monochrome image如何单色图像转换成2D阵列在红宝石

如何样品单色图像转换为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 } 
+1

请分享您尝试过的代码。你有什么特别的麻烦?见[问]。 –

回答

0

RMagick提供了一些解决方案。使用get_pixels可以获得一组Pixel对象。像素对象是可以从中获取红色,绿色和蓝色通道值的结构。由于图像是单色的,通道值将为0或QuantumRange。通过QuantumRange缩放值以强制它们为0或1.

或者,使用export_pixels。再次,通过QuantumRange缩放返回的值以获得0或1.

无论哪种情况,您都可以通过操作连续的子集(例如单行)来最小化存储需求(如果图像很大)图片。