web-dev-qa-db-ja.com

画像のNumpy配列を作成

Numpy配列に読み込みたい(950)150x150x3 .jpg画像ファイルがいくつかあります。

以下は私のコードです:

X_data = []
files = glob.glob ("*.jpg")
for myFile in files:
    image = cv2.imread (myFile)
    X_data.append (image)

print('X_data shape:', np.array(X_data).shape)

出力は(950, 150)です。リストがnp.arrayに正しく変換されない理由と、画像の配列を作成するより良い方法があるかどうかを教えてください。

私が読んだものの中で、numpy配列への追加は、pythonリストを介して配列に変換することで簡単に行えます。

編集:(それが役立つ場合)いくつかのより多くの情報、image.shape(150,150,3)を正しく返します。

10
Abhishek Bansal

コードをテストしました。出力で私にとってはうまくいきます

( 'X_data shape:'、(4、617、1021、3))

ただし、すべての画像はまったく同じサイズでした。

範囲が異なる別の画像を追加すると、次の出力が得られます。

( 'X_data shape:'、(5、))

だから、サイズと同じチャネル数を確認することをお勧めします(実際にはすべての画像が色付きの画像であるように)?また、すべての画像(または画像なし)にアルファチャネルがあるかどうかを確認する必要があります(@Gughan Ravikumarのコメントを参照)

チャンネルの数のみが異なる場合(つまり、一部の画像がグレーの場合)、次を使用してすべてを強制的にカラー形式にロードします。

image = cv2.imread (myFile, cv2.IMREAD_COLOR)

編集:私は質問のコードを使用しましたが、私のディレクトリ(および「* .PNG」)のみに置き換えました。

import cv2
import glob
import numpy as np

X_data = []
files = glob.glob ("C:/Users/xxx/Desktop/asdf/*.PNG")
for myFile in files:
    print(myFile)
    image = cv2.imread (myFile)
    X_data.append (image)

print('X_data shape:', np.array(X_data).shape)
13
DomTomCat

同じサイズのマトリックスに配置される.JPGフレームの定義は、x、y、R、G、B、Aである必要があります。「A」は使用されませんが、最後に8ビットを使用します各ピクセルの。

0
Bob