numpy配列に複数の画像を読み込むにはどうすればいいですか? 質問する

numpy配列に複数の画像を読み込むにはどうすればいいですか? 質問する

ディレクトリ内の複数の画像のピクセルを NumPy 配列にロードする方法。NumPy 配列に 1 つの画像をロードしました。しかし、ディレクトリから複数の画像をロードする方法がわかりません。これまでにやったことは次のとおりです。

image = Image.open('bn4.bmp')
nparray=np.array(image)

これは 32*32 の行列をロードします。100 枚の画像を NumPy 配列にロードします。100*32*32 サイズの NumPy 配列を作成したいのですが、どうすればいいでしょうか? 構造は次のようになると思います。

for filename in listdir("BengaliBMPConvert"):
  if filename.endswith(".bmp"):
       -----------------
  else:
       continue

しかし、NumPy配列に画像を読み込む方法がわかりません

ベストアンサー1

BMP ファイルのリストを取得する

ディレクトリから BMP ファイルのリストを取得するにはBengaliBMPConvert、次のコマンドを使用します。

import glob
filelist = glob.glob('BengaliBMPConvert/*.bmp')

一方、ファイル名がすでにわかっている場合は、ファイル名を順番に並べるだけです。

filelist = 'file1.bmp', 'file2.bmp', 'file3.bmp'

すべての画像を1つのnumpy配列に結合する

すべての画像を 1 つの配列に結合するには:

x = np.array([np.array(Image.open(fname)) for fname in filelist])

NumPy配列のピクル化

pickle を使用して numpy 配列をファイルに保存するには:

import pickle
pickle.dump( x, filehandle, protocol=2 )

ここで、xは保存する numpy 配列、filehandleは pickle ファイルのハンドル ( など) であり、open('filename.p', 'wb')は、protocol=2古い古い形式ではなく現在の形式を使用するように pickle に指示します。

あるいは、NumPy配列はNumPyが提供するメソッドを使ってピクル化することもできます(ヒント:テガン)。xファイル 内の配列をダンプするにはfile.npy、次を使用します。

x.dump('file.npy')

xファイルから配列を再度読み込むには:

x = np.load('file.npy')

詳細については、numpyのドキュメントを参照してください。ごみそして負荷

おすすめ記事