加载图像¶
日期 | 2008-12-08(上次修改),2006-10-10(创建) |
---|
图像处理通常在以 PNG 文件存储的灰度图像上进行。我们如何将该文件导入/导出到 {{{python}}} 中?
- 以下是用 Matplotlib 使用 {{{imread}}} 函数执行此操作的食谱(您的图像名为 {{{lena.png}}})。
from pylab import imread, imshow, gray, mean
a = imread('lena.png')
# generates a RGB image, so do
aa=mean(a,2) # to get a 2-D array
imshow(aa)
gray()
这允许进行一些处理以进行进一步导出,例如 [:Cookbook/Matplotlib/converting_a_matrix_to_a_raster_image:将矩阵转换为栅格图像]。在最新版本的 pylab 中(检查您的 {{{pylab.matplotlib.version}}} 是否高于 {{{'0.98.0'}}}),如果图像为灰度,您将直接获得一个 2D numpy 数组。
- 要写入图像,请执行
import Image mode = 'L' size= (256, 256) imNew=Image.new(mode , size) mat = numpy.random.uniform(size = size) data = numpy.ravel(mat) data = numpy.floor(data * 256)
imNew.putdata(data) imNew.save("rand.png") </code>
- 此类函数也存在于 {{{scipy.misc}}} 中,例如 {{{scipy.misc.imsave}}} 用于创建彩色图像:
from scipy.misc import imsave import numpy a = numpy.zeros((4,4,3)) a[0,0,:] = [128, 0 , 255] imsave('graybackground_with_a_greyish_blue_square_on_top.png',a)
- 要定义范围,请使用:
from scipy.misc import toimage import numpy a = numpy.random.rand(25,50) #介于 0. 和 1. 之间 toimage(a, cmin=0., cmax=2.).save('low_contrast_snow.png')
(改编自 http://telin.ugent.be/~slippens/drupal/scipy_unscaledimsave )
- 有一个更直接的方法,由 http://jehiah.cz/archive/creating-images-with-numpy 建议。
章节作者:LaurentPerrinet