2017-03-04 6 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

uint8 (gdal.GDT_Byte) 이미지에 uint16을 쓰려고합니다. GIS가 아닌 프로그램에서이 이미지를보고 싶은 경우와 같이 8 비트 이미지가 실제로 필요한 경우 im_final을 0-255로 스케일하는 것이 가장 좋습니다. 이것은 0-65535에서 0-255까지의 매핑 또는 각 밴드의 최소/최대와 0-255 사이의 매핑 또는 다른 수의 방법이 될 수 있습니다.

im_final의 값이 중요한 경우 에 gdal.GDT_UInt16을 사용하십시오.

+0

아, GIS 프로그램에서'uint16' 출력 만 볼 수 있습니까? 내 Mac에서 출력을 보았는데 나는이 오류가 발생합니다 :'그것은 손상되었거나 미리보기에서 인식 할 수없는 파일 형식을 사용할 수 있습니다. ' –

+0

16 비트 이미지 (Adobe Photoshop, 다른 이미지 조작 소프트웨어, GIS)를 처리 할 수있는 많은 프로그램이 있습니다. 예를 들어 이미지를 웹에 게시하려면 8 비트 RGB (jpeg 또는 png)가 가장 좋습니다. –