Why plt.imshow() doesn't display the image?

前端 未结 4 2157
予麋鹿
予麋鹿 2020-12-13 12:06

I am a newbie to keras, and when I tried to run my first keras program on my linux, something just didn\'t go as I wish. Here is my python code:

import numpy         


        
相关标签:
4条回答
  • 2020-12-13 12:26

    If you want to print the picture using imshow() you also execute plt.show()

    0 讨论(0)
  • 2020-12-13 12:30

    The solution was as simple as adding plt.show() at the end of the code snippet:

    import numpy as np
    np.random.seed(123)
    from keras.models import Sequential
    from keras.layers import Dense, Dropout, Activation, Flatten
    from keras.layers import Convolution2D, MaxPooling2D
    from keras.utils import np_utils
    from keras.datasets import mnist
    (X_train,y_train),(X_test,y_test) = mnist.load_data()
    print X_train.shape
    from matplotlib import pyplot as plt
    plt.imshow(X_train[0])
    plt.show()
    
    0 讨论(0)
  • 2020-12-13 12:43

    plt.imshow displays the image on the axes, but if you need to display multiple images you use show() to finish the figure. The next example shows two figures:

    import numpy as np
    from keras.datasets import mnist
    (X_train,y_train),(X_test,y_test) = mnist.load_data()
    from matplotlib import pyplot as plt
    plt.imshow(X_train[0])
    plt.show()
    plt.imshow(X_train[1])
    plt.show()
    

    In Google Colab, if you comment out the show() method from previous example just a single image will display (the later one connected with X_train[1]).

    Here is the content from the help:

    plt.show(*args, **kw)
            Display a figure.
            When running in ipython with its pylab mode, display all
            figures and return to the ipython prompt.
    
            In non-interactive mode, display all figures and block until
            the figures have been closed; in interactive mode it has no
            effect unless figures were created prior to a change from
            non-interactive to interactive mode (not recommended).  In
            that case it displays the figures but does not block.
    
            A single experimental keyword argument, *block*, may be
            set to True or False to override the blocking behavior
            described above.
    
    
    
    plt.imshow(X, cmap=None, norm=None, aspect=None, interpolation=None, alpha=None, vmin=None, vmax=None, origin=None, extent=None, shape=None, filternorm=1, filterrad=4.0, imlim=None, resample=None, url=None, hold=None, data=None, **kwargs)
            Display an image on the axes.
    
    Parameters
    ----------
    X : array_like, shape (n, m) or (n, m, 3) or (n, m, 4)
        Display the image in `X` to current axes.  `X` may be an
        array or a PIL image. If `X` is an array, it
        can have the following shapes and types:
    
        - MxN -- values to be mapped (float or int)
        - MxNx3 -- RGB (float or uint8)
        - MxNx4 -- RGBA (float or uint8)
    
        The value for each component of MxNx3 and MxNx4 float arrays
        should be in the range 0.0 to 1.0. MxN arrays are mapped
        to colors based on the `norm` (mapping scalar to scalar)
        and the `cmap` (mapping the normed scalar to a color).
    
    0 讨论(0)
  • 2020-12-13 12:53

    plt.imshow just finishes drawing a picture instead of printing it. If you want to print the picture, you just need to add plt.show.

    0 讨论(0)
提交回复
热议问题