表題そのままのスクリプトです
VGG16とSVMを使った判別機を作る際に使用したものの一部を切り取り、単独で機能するようにしました
動作概略
1)img2ndarray.pyと同じフォルダ内に保存された画像ファイルを読み込み
2)画像サイズを224x224にリサイズ後、Numpy配列化
3)**[npy]**ファイルとして保存
動作確認環境
python3.6.6
Tensorflow:1.10.0
Keras:2.2.2
スクリプト全体
img2ndarray.py
import glob
import numpy as np
from keras.preprocessing.image import load_img,img_to_array
# image array size
img_size = (224,224)
# load images Folder
dir_name = 'test1'
# File type
file_type = 'jpg'
# load images and image to array
img_list = glob.glob('./' + dir_name + '/*.' + file_type)
temp_img_array_list = []
for img in img_list:
temp_img = load_img(img,grayscale=False,target_size=(img_size))
temp_img_array = img_to_array(temp_img) /255
temp_img_array_list.append(temp_img_array)
temp_img_array_list = np.array(temp_img_array_list)
# save np.array
np.save(dir_name+'.npy',temp_img_array_list)
★解説
上からやっていることを解説
import一式
import glob
import numpy as np
from keras.preprocessing.image import load_img,img_to_array
読込画像の設定
# 入力画像サイズの指示
img_size = (224,224)
# 画像フォルダ名の指示
dir_name = 'test1'
# 画像拡張子の指示
file_type = 'jpg'
画像の読み込みと配列化
# フォルダ内のファイルパスをリスト化
img_list = glob.glob('./' + dir_name + '/*.' + file_type)
# 保存先の配列を確保
temp_img_array_list = []
# ファイルパスのリストをもとに画像を配列化
for img in img_list:
#画像を224x224にリサイズしPIL形式で読込
temp_img = load_img(img,grayscale=False,target_size=(img_size))
#PIL形式からNumpy配列に変換と正規化(224, 224, 3)
temp_img_array = img_to_array(temp_img) /255
#変換したNumpy配列を末尾に追加
temp_img_array_list.append(temp_img_array)
# Numpy配列をリスト化(*, 244, 224, 3)
temp_img_array_list = np.array(temp_img_array_list)
配列をnpyファイルとして保存
np.save(dir_name+'.npy', temp_img_array_list)