Python利用PIL将数值矩阵转化为图像

时光怂恿深爱的人放手 提交于 2019-11-30 22:52:03

要求:输入一个n*n的矩阵,矩阵包括从-1到1的浮点数,将其转化为可视化图像

调库

from PIL import Image import numpy as np import math

载入图像,并使用np.array()转化为矩阵

Image.new()第一个参数是模式,第二个是尺寸,第三个参数如果不填默认是黑色,填3个255就是白色.

img = Image.new('RGB', (256, 256), (255, 255, 255)) matrix=np.array(img) matrix

输出

array([[[255, 255, 255],         [255, 255, 255],         [255, 255, 255],         ...,         [255, 255, 255],         [255, 255, 255],         [255, 255, 255]],         [[255, 255, 255],         [255, 255, 255],         [255, 255, 255],         ...,         [255, 255, 255],         [255, 255, 255],         [255, 255, 255]],         [[255, 255, 255],         [255, 255, 255],         [255, 255, 255],         ...,         [255, 255, 255],         [255, 255, 255],         [255, 255, 255]],         ...,         [[255, 255, 255],         [255, 255, 255],         [255, 255, 255],         ...,         [255, 255, 255],         [255, 255, 255],         [255, 255, 255]],         [[255, 255, 255],         [255, 255, 255],         [255, 255, 255],         ...,         [255, 255, 255],         [255, 255, 255],         [255, 255, 255]],         [[255, 255, 255],         [255, 255, 255],         [255, 255, 255],         ...,         [255, 255, 255],         [255, 255, 255],         [255, 255, 255]]], dtype=uint8)

可以利用如下方法修改matrix的值

matrix[0][0]=[0,0,0] matrix
array([[[  0,   0,   0],         [255, 255, 255],         [255, 255, 255],         ...,         [255, 255, 255],         [255, 255, 255],         [255, 255, 255]],         [[255, 255, 255],         [255, 255, 255],         [255, 255, 255],         ...,         [255, 255, 255],         [255, 255, 255],         [255, 255, 255]],         [[255, 255, 255],         [255, 255, 255],         [255, 255, 255],         ...,         [255, 255, 255],         [255, 255, 255],         [255, 255, 255]],         ...,         [[255, 255, 255],         [255, 255, 255],         [255, 255, 255],         ...,         [255, 255, 255],         [255, 255, 255],         [255, 255, 255]],         [[255, 255, 255],         [255, 255, 255],         [255, 255, 255],         ...,         [255, 255, 255],         [255, 255, 255],         [255, 255, 255]],         [[255, 255, 255],         [255, 255, 255],         [255, 255, 255],         ...,         [255, 255, 255],         [255, 255, 255],         [255, 255, 255]]], dtype=uint8)

制造数据,100*100的矩阵,包含-1到1的浮点数

lis=[[]for i in range(100)] for i in range(100):     for j in range(100):         lis[i].append(float(math.sin(i+j))) lis[1][1]
0.9092974268256817

将[-1,1]映射到[0,255],负数为绿色系,正数为紫色系.

for i in range(100):     for j in range(100):         degree=lis[i][j]         rgb=int(abs(degree)*255)         #print(rgb)         if(degree>=0):             matrix[i][j]=[rgb,0,rgb]         else:             matrix[i][j]=[0,rgb,0] img=Image.fromarray(matrix) img

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!