imshow(img, cmap=cm.gray) shows a white for 128 value

前端 未结 1 518
一个人的身影
一个人的身影 2020-11-27 06:19

I\'m moving from MatLab to python and playing around with the imshow function.

I can\'t seem to get my head around why it doesn\'t show the value 128 as grey with I

相关标签:
1条回答
  • 2020-11-27 06:36

    Use the vmin and vmax parameters:

    plt.imshow(bg, cmap=plt.get_cmap('gray'), vmin=0, vmax=255)
    

    Without specifying vmin and vmax, plt.imshow auto-adjusts its range to the min and max of the data.


    I do not know of a way to set default vmin and vmax parameters for all imshow plots, but you could use functools.partial to prepare a custom imshow-like command with default parameters set:

    import matplotlib.pyplot as plt
    import numpy as np
    import functools
    
    bwimshow = functools.partial(plt.imshow, vmin=0, vmax=255,
                                 cmap=plt.get_cmap('gray'))
    
    dots = np.random.randn(10, 10)*255
    bwimshow(dots)
    cbar = plt.colorbar()
    
    plt.show()
    
    0 讨论(0)
提交回复
热议问题