2017-10-25 3 views
1

RGBAイメージからグレースケール値を持つ2次元numpy配列を取得しようとしています。私が使用する方法はimreadからspicy.miscですが、mode='F'またはflatten=Trueと設定すると結果はゼロ行列になります。scipy.misc impleは、flatten = TrueでRGBAイメージを読み取るときに0の2次元配列を返します。

マイコード:

(278, 278) 
[[ 0. 0. 0. ..., 0. 0. 0.] 
[ 0. 0. 0. ..., 0. 0. 0.] 
[ 0. 0. 0. ..., 0. 0. 0.] 
..., 
[ 0. 0. 0. ..., 0. 0. 0.] 
[ 0. 0. 0. ..., 0. 0. 0.] 
[ 0. 0. 0. ..., 0. 0. 0.]] 

と画像:letter A

答えて

0

あなたのイメージは "純粋なアルファ" である

img_mat = misc.imread(f, mode='F') 

img_mat = misc.imread(f, flatten=True) 

出力を試してみました!画像のRGB成分はすべて0です。アルファチャンネルのみが0以外の値を持ちます。どうやら、基礎となる画像ライブラリ(PILまたはPillow)がRGBA画像をモード 'F'に変換するとき、アルファチャンネルを無視するので、最終的にゼロの配列になります。

の代わりにあなたがそれを読んだとき、あなたはRGBAデータを読み込み、その後、あなたの扁平なイメージとしてアルファチャンネルを使用することができ、画像を平坦化:

img_data = imread(f)   # Read the RGBA image 
img_mat = img_data[:, :, 3] # Extract the alpha channel 
+0

おかげで、その時間後に発見しました。 KerasのConv2dレイヤの入力として3次元配列を取得するために使用される 'image_mat = misc.imread(f) image_mat = image_mat [:,:、3:]/[1.0]' –

関連する問題