Numpy配列のディレクトリに複数の画像のピクセルをロードする方法。 numpy配列に単一の画像をロードしました。しかし、ディレクトリから複数の画像をロードする方法を理解することはできません。ここで私がこれまでにしたこと
image = Image.open('bn4.bmp')
nparray=np.array(image)
これにより、32 * 32マトリックスがロードされます。 numpy配列に100個の画像をロードします。 100 * 32 * 32サイズのnumpy配列を作りたい。どうやってやるの ?構造は次のようになります
for filename in listdir("BengaliBMPConvert"):
if filename.endswith(".bmp"):
-----------------
else:
continue
しかし、numpy配列の画像をロードする方法を見つけることができません
ディレクトリBengaliBMPConvert
からBMPファイルのリストを取得するには、次を使用します。
_import glob
filelist = glob.glob('BengaliBMPConvert/*.bmp')
_
一方、ファイル名が既にわかっている場合は、それらを順番に並べてください。
_filelist = 'file1.bmp', 'file2.bmp', 'file3.bmp'
_
すべての画像を1つの配列に結合するには:
_x = np.array([np.array(Image.open(fname)) for fname in filelist])
_
Pickleを使用してnumpy配列をファイルに保存するには:
_import pickle
pickle.dump( x, filehandle, protocol=2 )
_
ここで、x
は保存するnumpy配列、filehandle
はopen('filename.p', 'wb')
などのpickleファイルのハンドル、_protocol=2
_はpickleの使用を指示します古くなった古い形式ではなく、現在の形式。
あるいは、numpyによって提供されるメソッドを使用して、numpy配列をピクルスにすることもできます(帽子のヒント: tegan )。配列x
をファイル_file.npy
_にダンプするには、次を使用します。
_x.dump('file.npy')
_
配列x
をファイルから再び読み込むには:
_x = np.load('file.npy')
_
OpenCVの imread() 関数を os.listdir() と一緒に使用
_import numpy as np
import cv2
import os
instances = []
# Load in the images
for filepath in os.listdir('images/'):
instances.append(cv2.imread('images/{0}'.format(filepath),0))
print(type(instances[0]))
_
クラス 'numpy.ndarray'
これにより、画像のすべてのグレースケール値が保存されているリスト(== instances
)が返されます。カラー画像の場合は、単に.format(filepath),1
を設定します。