将像素值数组保存到文本文件中

时间:2017-01-06 16:00:56

标签: python arrays image pixels pillow

我有一个灰度图像的像素值数组。我想将这些值导出为文本文件或CSV。我一直在尝试使用各种功能,包括:xlsxwrite,write,CSV但我到目前为止还没有成功。这就是我正在使用的:

from PIL import Image
import numpy as np 
import sys

# load the original image
img_file = Image.open("seismic.png") 
img_file.show() 

# get original image parameters...
width, height = img_file.size
format = img_file.format
mode = img_file.mode

# Make image Greyscale
img_grey = img_file.convert('L') 
img_grey.save('result.png')
img_grey.show()

# Save Greyscale values
value = img_grey.load()

基本上我想保存'价值'在别处使用。

1 个答案:

答案 0 :(得分:2)

您可以使用此方法(使用“x”作为灰度图像),而不是使用.load()方法:

value = np.asarray(x.getdata(),dtype=np.float64).reshape((x.size[1],x.size[0]))

来自:Converting an RGB image to grayscale and manipulating the pixel data in python

完成此操作后,可以直接使用numpy.savetxt将数组保存到文件中

numpy.savetxt("img_pixels.csv", value, delimiter=',')

注意:x.load()会产生一个Pixel Access类的实例,无法使用您提到的csv编写器进行操作。可以在此处找到可用于提取和操作Pixel Access类中的单个像素的方法:http://pillow.readthedocs.io/en/3.1.x/reference/PixelAccess.html