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


    要求:输入一个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
    

    _VMPM_GLP72Y__JNMW_91_I.png

  • 相关阅读:
    Linux-Zabbix 邮件报警设置
    CentOS6.7 防火墙规则(Iptables)
    CentOS7 防火墙规则 (firewalld)
    windows搭建代理服务器
    Linux服务器的远程IP限制
    利用shell脚本监控目录内文件改动
    CentOS 7, 升级python到3.x
    CentOS 7, Attempting to create directory /root/perl5
    变长参数表
    C语言预处理
  • 原文地址:https://www.cnblogs.com/Tony100K/p/11643730.html
Copyright © 2020-2023  润新知