2017-03-04 17 views
2

サイズが大きい画像を保存しようとしています(15000, 80000, 3)。この配列は、私がim_final = np.zeros((15000,80000,,3))と初期化した数値的な配列です。保存を行うために、私はそうのようgdalを使用します。大きなカラーイメージを `gdal`で` GTiff`として保存する

dst_ds = gdal.GetDriverByName('GTiff').Create('val.tif', 80000, 15000, 3, gdal.GDT_Byte) 
dst_ds.GetRasterBand(1).WriteArray(im_final[:,:,0]) # write r-band to the raster 
dst_ds.GetRasterBand(2).WriteArray(im_final[:,:,1]) # write g-band to the raster 
dst_ds.GetRasterBand(3).WriteArray(im_final[:,:,2]) # write b-band to the raster 
dst_ds.FlushCache()      # write to disk 
dst_ds = None 

私はそれを保存すると、結果の画像は黒と白です。しかし、私はイメージがRGBである必要があります、誰でも問題が分かっていますか?さらに、im_finalの値はuint16です。

答えて

2

uint8gdal.GDT_Byte)イメージにuint16を書き込もうとしていますか? GIS以外のプログラムでこの画像を表示する場合など、実際に8ビット画像が必要な場合は、im_finalを0〜255の間でスケールすることをお勧めします。これは、0〜65535から0〜255までのマッピング、または各バンドの最小/最大から0〜255または他の任意の数の方法へのマッピングとすることができる。

im_finalの値が重要な場合はにgdal.GDT_UInt16を使用してください。

+0

ああ、私は 'uint16'出力をGISプログラムで見ることはできますか?私は私のMacで出力を見てみましたが、私はこのエラーが発生します: '破損しているか、またはプレビューが認識できないファイル形式を使用している可能性があります。 –

+0

16ビットイメージ(Adobe Photoshop、その他のイメージ操作ソフトウェア、GIS)を処理できるプログラムはたくさんあります。たとえば、画像をWebに公開したい場合、おそらく8ビットRGB(JPEGまたはPNG)が最適です。 –

関連する問題