自作のデータセットを作成したいため、画像にラベルを付与しその画像をplotしようとしているのですが、plot結果が下記のようになってしまうのできれいに表示させたいです。
このLINKのように画像が白くならないようにplotさせたいです。
from keras.preprocessing.image import ImageDataGenerator import matplotlib.pyplot as plt data_datagen = ImageDataGenerator() save_path = '/home/label_save/' classes = ['cat','dog','dolphin','octopus'] data = data_datagen.flow_from_directory('train', target_size = (256, 256), color_mode = 'rgb', classes = classes, batch_size = 1, save_to_dir = save_path, save_prefix = 'aug', save_format = 'png', class_mode = 'categorical') imgs = [] labbels = [] for i in range(12): x,y = data.next() # next()でgeneratorの要素を順番に取り出す print(x.shape) print(y.shape) imgs.append(x[0]) labbels.append(y) print(type(imgs)) label_dict = data.class_indices print(label_dict) print(label_dict['cat']) print(label_dict['dog']) print(label_dict['dolphin']) print(label_dict['octopus']) # 表示設定 fig = plt.figure(figsize=(20,20)) fig.subplots_adjust(hspace=0.5, wspace=0.5) row = 10 col = 10 for i, img in enumerate(imgs): # インデックス番号と要素をenumerateで取得できる print(img.shape) plot_num = i+1 plt.subplot(row, col, plot_num,xticks=[], yticks=[]) plt.imshow(img) plt.title('%s' %labbels[i]) plt.show()
色がおかしいのか大きさがおかしいのか、どういう状態が「きれい」か書いた方がイイです。
imgs にnp.zeros((250,250,3))のダミー画像3つをいれて表示させたところ、ちゃんと三つ真っ黒(zeros)が表示できました。 imgs.append(x[0])の部分でちゃんと画像が入っているか確認できますか?
cv2.imshow("x0",x[0])
cv2.waitKey(0)
のような感じで画像を逐一表示させてデバグするイメージです。もしかしたらx[0]に真っ白な画像が入っているか、matplotlibでは白以外の画素が縮小表示されたときにつぶれて真っ白になっているだけか、これで探れると思います。
逐一表示させたところなんとなくの輪郭しか表示できないので上手く画像が入っていないようでしたので、画像の入れ方を変更したところ解決できました。
回答1件
あなたの回答
tips
プレビュー