Win10, python3.7
完全に行き詰っています。
画像をうまく読み込めていない可能性があります。
プログラムは正常に動きますが、結果を見ると空のデータが出力されます。
写真サイズは150x150です。
"nekobox"に5枚格納しています
python
1#犬猫見た目による学習/検証データの準備 2 3from PIL import Image 4import os, glob 5import numpy as np 6import random, math 7 8#画像が保存されているルートディレクトリのパス 9root_dir ="C:\Users\kmll\python_code\nekobox" 10# 種類 11categories = ["neko","inu"] 12 13# 画像データ用配列 14X = [] 15# 種類データ用配列 16Y = [] 17 18#画像データごとにadd_sample()を呼び出し、X,Yの配列を返す関数 19def make_sample(files): 20 global X, Y 21 X = [] 22 Y = [] 23 for cat, fname in files: 24 add_sample(cat, fname) 25 return np.array(X), np.array(Y) 26 27#渡された画像データを読み込んでXに格納し、また、 28#画像データに対応するcategoriesのidxをY格納する関数 29def add_sample(cat, fname): 30 img = Image.open(fname) 31 img = img.convert("RGB") 32 img = img.resize((150, 150)) 33 data = np.asarray(img) 34 X.append(data) 35 Y.append(cat) 36 37#全データ格納用配列 38allfiles = [] 39 40#カテゴリ配列の各値と、それに対応するidxを認識し、全データをallfilesにまとめる 41for idx, cat in enumerate(categories): 42 image_dir = root_dir + "/" + cat 43 files = glob.glob(image_dir + "/*.jpg") 44 for f in files: 45 allfiles.append((idx, f)) 46 47#シャッフル後、学習データと検証データに分ける 48random.shuffle(allfiles) 49th = math.floor(len(allfiles) * 0.8) 50train = allfiles[0:th] 51test = allfiles[th:] 52X_train, y_train = make_sample(train) 53X_test, y_test = make_sample(test) 54xy = (X_train, X_test, y_train, y_test) 55 56#データを保存する(データの名前を「animal_data.npy」としている) 57np.save("C:\Users\kmll\python_code\animal/animal_data.npy", xy) 58print(xy)
出力結果
(array([], dtype=float64), array([], dtype=float64), array([], dtype=float64), array([], dtype=float64))
助けてください。
回答1件
あなたの回答
tips
プレビュー