IntroMatplotlib erzeugt ein schwarzes Bild von einem Array voller Einsen
ich matplotlib.pyplot
einige Tests tue. Als ich versuchte, künstliche Bilder zu speichern, begegnete ich einem seltsamen Verhalten. Hier ist die sehr einfache Funktion, die ich erstellt Bilder speichern:
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
def save_image(array, name):
array = array*255.
fig = plt.figure()
plt.imsave(name, array.astype('uint8'), cmap=matplotlib.cm.gray)
plt.close(fig)
return 0
Das Problem
Wenn ich versuche, ein Bild mit einem Array erstellen vollen Nullen, ich ein dunkles Bild zu erhalten, wie erwartet:
zeros_array = np.zeros((200,200), dtype='float')
save_image(zeros_array, 'Dark.jpg')
Allerdings, wenn ich versuche, ein Bild mit einer Reihe voller diejenigen zu schaffen, habe ich noch erhält ein dunkles Bild:
ones_array = np.ones((200,200), dtype='float')
save_image(ones_array, 'White.jpg')
Interessanterweise, wenn ich ein mixed_array
, mit Quadraten unterschiedlicher Intensität erzeugen, werden die Regionen voller Einsen jetzt als weiß:
mixed_array = np.ones((200,200), dtype='float')
mixed_array[:100,:100] = 0.25
mixed_array[100:,100:] = 0.75
save_image(mixed_array, 'Mixed.jpg')
Frage:
Weiß jemand, warum matplotlib
weigert, ein vollständiges weißes Bild zu speichern, aber kein Problem mit weißen Bereichen in einem Bild hat?
Ich vermisse wahrscheinlich etwas sehr offensichtlich oder grundlegend, aber ich kann nicht sehen was.