LoginSignup
19
21

More than 5 years have passed since last update.

フォルダ内の画像を全部まとめてNumpy配列にしてnpyで保存

Posted at

表題そのままのスクリプトです

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)
19
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
21