how to save an array as a grayscale image with matplotlib/numpy?

前端 未结 3 1052
甜味超标
甜味超标 2021-01-04 05:40

I am trying to save a numpy array of dimensions 128x128 pixels into a grayscale image. I simply thought that the pyplot.imsave function would do the job but it\'s not, it so

相关标签:
3条回答
  • 2021-01-04 05:45

    I didn't want to use PIL in my code and as noted in the question I ran into the same problem with pyplot, where even in grayscale, the file is saved in MxNx3 matrix.

    Since the actual image on disk wasn't important to me, I ended up writing the matrix as is and reading it back "as-is" using numpy's save and load methods:

    np.save("filename", image_matrix)
    

    And:

    np.load("filename.npy")
    
    0 讨论(0)
  • 2021-01-04 05:47

    There is also a possibility to use scikit-image, then there is no need to convert numpy array into a PIL object.

    from skimage import io
    io.imsave('output.tiff', I.astype(np.uint16))
    
    0 讨论(0)
  • 2021-01-04 05:57

    With PIL it should work like this

    import Image
    
    I8 = (((I - I.min()) / (I.max() - I.min())) * 255.9).astype(np.uint8)
    
    img = Image.fromarray(I8)
    img.save("file.png")
    
    0 讨论(0)
提交回复
热议问题