zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    查看kafka在zookeeper中节点信息和查看方式
    安装单机版redis
    一 Redis 简介 和存储
    Spark消费kafka的直连方式
    Streaming 累加器和广播变量 和sql
    sparkStreaming转换算子02
    DStreams输入 从kafka消费数据 直连
    关于上下文图
    2018年春季个人阅读计划
    问题账户需求分析
  • 原文地址:https://www.cnblogs.com/Tony100K/p/11643730.html
Copyright © 2011-2022 走看看