PythonMania

普段はロボットとAIを組み合わせて色々作ってます。Python関係以外も色々投稿していくと思います。

【Python】画像データをtensorflowで読み込み可能な形式(numpy配列)にする【DeepLearning】


スポンサードリンク



from PIL import Image
import os,glob
import numpy as np
from sklearn import model_selection

#クラスを配列に格納
classes = ["A","B","C"]

num_classes = len(classes)
image_size = 50

#画像の読み込み
#最終的に画像、ラベルはリストに格納される
X = []
Y = []
#まずfor文で画像のインデックスとクラスを取得(1:りんご,2,ブドウ...)
for index,classlabel in enumerate(classes):
    photos_dir = "./" + classlabel
    #globでそれぞれのクラスの画像一覧を取得
    files = glob.glob(photos_dir + "/*.jpg")
    #for文を使い、それぞれのクラスの200枚までの画像を取得
    for i,file in enumerate(files):
        if i >=200:break
        image = Image.open(file)
        image = image.convert("RGB")
        image = image.resize((image_size,image_size))
         #イメージを1枚ずつnumpy配列に変換
        data = np.asarray(image)
  #リストに格納
        X.append(data)
        Y.append(index)

#格納したリストをさらにnumpy配列に変換
X = np.array(X)
Y = np.array(Y)

X_train,X_test,Y_train,Y_test = model_selection.train_test_split(X,Y)


#画像の正規化
X_train = X_train.astype("float")/256
X_test = X_test.astype("float")/256
#ラベルをカテゴリ変数に変換
y_train = np_utils.to_categorical(y_train,num_classes)
y_test = np_utils.to_categorical(y_test,num_classes)