0

私は Python の初心者で、主成分分析 (PCA) を一連の画像に適用しようとしています。PCAを実行できるように、画像をマトリックスに入れたいです。私はまだ始めたばかりですが、エラーが発生しています。

import numpy as np
import Image
import os

#insert images to matrix
dirname = 'C:\Users\Karim\Downloads\shp_marcel_train\Marcel-Train\A'
X = [np.asarray(Image.open(os.path.join(dirname, fn))) for fn in os.listdir(dirname)]

#get dimensions
num_data,dim = X.shape

それは与えますAttributeError: 'list' object has no attribute 'shape'

誰でも助けることができますか?

詳細なチュートリアルへのリンクをいただければ幸いです

4

2 に答える 2

2

あなたが定義したようにX、リストです:

X = [... for fn in ...]

Python リストには shape 属性がありません。このリスト内には、shape 属性を持つNumPy 配列があります。だからあなたは言うことができます

num_data = len(X)
shape_of_first_array = X[0].shape

(何を表すのか説明していませんでしたdim...)


これは、PCA と State Vector Machine を使用して行われた顔認識の例です。関連する別の例を次に示します。

于 2013-04-05T19:18:13.883 に答える
1

あなたがするとき

[np.asarray(Image.open(os.path.join(dirname, fn))) for fn in os.listdir(dirname)]

ローカル変数に格納されている配列を返しますX

リストから変数を抽出しようとしているため、エラーが発生します。

内部の個々の要素にXは形状属性があります。したがって、このようなことをする必要があります(データ構造が次のshapeように定義されているように変更してください)

dim0 = X[0].shape等々

于 2013-04-05T19:18:26.697 に答える