2016-08-12 14 views
0

私はスケーリングして元の値に戻す画像行列を持っています。不正確な画像を出力する行列乗算

イメージは、まずサイズ(150,200,3)の配列に読み込まれます。

image_data = ndimage.imread(image_file,mode='RGB').astype(float) 

次に、ピクセル値を元に戻して元の値に戻します。また、float配列を整数配列にキャストします。

image_data = (image_data - (255.0/2))/255.0 
    image_data = (image_data * 255.0) + (255.0/2) 
    image_data = image_data.astype(int) 

ここで画像をinitial.jpgファイルに保存します。私は行列の乗算とキャスト(コードの真ん中の3行)を削除した場合

image0 = PILImage.fromarray(image_data,mode='RGB') 
    image0.save('Tests/Initial.jpg') 

保存された画像は、しかし...このよう

enter image description here

を探します。私はこのようなイメージを保存します。これは正しいファイルです。

enter image description here

私が行列を確認しても修正行列は、オリジナルと同じですので、画像が同様に同一ではないだろう、なぜ私は混乱しています。

答えて

0

イメージアレイは、uint8タイプの場合にのみ適切に保存できます。だから、

image_data = image_data.astype(np.uint8)

image_data = image_data.astype(int)

を変更