先说明一下为什么要将数组转换成Image类。我处理的图像是FITS (Flexible Image Transport System)文件,是一种灰度图像文件,也就是单通道图像。
FITS图像的特点是灰度值取值为0~65535,这类图像在python下读成数组首先是不能直接转换成位图,也就不能用OpenCV、Image等方法了。
如果是普通的jpg图像,用自带的Image库就能实现很多功能。
下方的这幅图就是通过python下的Image库中的rotate函数实现的
接下来贴上代码。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
import Image
import numpy as np
#生成一个数组,维度为100*100,灰度值一定比255大
narray = np.array([ range ( 10000 )],dtype = 'int' )
narray = narray.reshape([ 100 , 100 ])
#调用Image库,数组归一化
img = Image.fromarray(narry * 255.0 / 9999 )
#转换成灰度图
img = img.covert( 'L' )
#可以调用Image库下的函数了,比如show()
img.show()
#Image类返回矩阵的操作
imgdata = np.matrix(img.getdata(),dtype = 'float' )
imgdata = imgdata.reshape(narry.shape[ 0 ],narry.shape[ 1 ])
#图像归一化,生成矩阵
nmatrix = imgdata * 9999 / 255.0
|
这是刚才代码生成的图片,是不是很简单?
以上这篇Python 实现将数组/矩阵转换成Image类就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/Jum_Tsai/article/details/70337816